SQL Having的用法
类别:数据库 浏览量:10269
时间:2013-8-26 SQL Having的用法
SQL Having的用法 一、HAVING 子句在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
二、SQL HAVING 语法
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
三、SQL HAVING 实例
我们拥有下面这个 "Orders" 表:
O_Id | OrderDate | OrderPrice | Customer |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000结果集类似:
Customer | SUM(OrderPrice) |
---|---|
Carter | 1700 |
现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
我们在 SQL 语句中增加了一个普通的 WHERE 子句:
SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500结果集:
Customer | SUM(OrderPrice) |
---|---|
Bush | 2000 |
Adams | 2000 |
四、另外需要注意的是:
当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
执行where子句查找符合条件的数据;
使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;
最后用having 子句去掉不符合条件的组。
select dno,count(*)
from employee
group by dno
having count(*)>3
需要注意:
having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
select dno,sum(salary)
from employee
group by dno
having sum(salary)>10000
您可能感兴趣
- mysql8使用技巧(一篇学会MySQL 8.0 ROLE管理)
- sqlserver怎么显示变量所占字节数(SQL Server中关于基数估计计算预估行数的一些方法探讨)
- sqlifnull如何使用(在 SQL 语句中处理 NULL 值的方法)
- sqlserver 查询数据库增长设置(SQL设置SQL Server最大连接数及查询语句)
- SQL Server中@@ROWCOUNT的用法
- sqlserver怎么修改表结构(SQL Server中修改“用户自定义表类型”问题的分析与方法)
- 所有聚合函数mysql教程(Mysql 聚合函数嵌套使用操作)
- mysql怎么建立主键外键(mysql 实现设置多个主键的操作)
- mysql视图管理方法(MySQL 视图View原理解析)
- sqlserver厉害的函数(SQL Server里书签查找的性能伤害)
- 在sqlserver中如何看表格的类型(SQL Server 中的数据类型隐式转换问题)
- mysql查询很慢怎么回事(MySQL Like模糊查询速度太慢如何解决)
- sql字母通配符(详解SQL 通配符)
- mysql 使用小结(Mysql Online DDL的使用详解)
- sqlserver2014怎么重新激活(解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题)
- sqlserver纵表变横表(SQL Server行转列的方法解析)
- 如何追女孩子(如何追女孩子的技巧和方法)
- 是不是快乐全被你拿走了(而是你得到的)
- 世界上只有妈妈好(世界上只有妈妈好的歌词)
- 为什么现在社会越来越卷了(现在社会为什么发展那么快呢)
- 直播带货能赚到很多钱吗(直播带货能赚到很多钱吗现在)
- 做网红真的很能赚钱吗(做网红真的很能赚钱吗)