SQL基础知识V2——HAVING子句

简介: SQL数据库开发

HAVING的作用

HAVING 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。

WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。


HAVING语法

下面可以看到 HAVING 子句在 SELECT 查询中的位置:

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY


在 SELECT 查询中,HAVING 子句必须紧随 GROUP BY 子句,并出现在 ORDER BY 子句(如果有的话)之前。带有 HAVING 子句的 SELECT 语句的语法如下所示:

SELECT column1,column2

FROM table1,table2

WHERE [conditions]

GROUP BY column1,column2

HAVING [conditions]

ORDER BY column1,column2


HAVING实例

考虑 Customers表,表中的记录如下所示:

70.jpg

下面是一个有关 HAVING 子句使用的实例,该实例将会筛选出"城市"列的内容出现次数大于或等于 2 的所有记录。

SELECT * FROM Customers
WHERE 城市 IN (
SELECT 城市 FROM Customers
GROUP BY 城市
HAVING COUNT(1)>1
)

其执行结果如下所示:


71.jpg

上面的代码用了一个子查询,主要是因为在SQL Server中GROUP BY分组后,在SELECT后面显示的列里面只能显示分组的列,比如我们这里对城市分组了,那么子查询里面就只能显示城市列,如果要显示其他列,比如要还要显示"省份"

SELECT 城市,省份 FROM Customers
GROUP BY 城市
HAVING COUNT(1)>1

会提示如下错误:

72.jpg

所以我们将筛选出来符合条件的内容,通过子查询再传递给外面的主查询。主查询就可以不受GROUP BY的约束显示你想显示的内容了。

相关文章
|
26天前
|
SQL 关系型数据库 MySQL
SQL中,可以使用 `ORDER BY` 子句来实现排序功能
【10月更文挑战第26天】SQL中,可以使用 `ORDER BY` 子句来实现排序功能
58 6
|
4月前
|
SQL 存储
如何在 SQL Server 中使用 `OUTPUT` 子句
【8月更文挑战第10天】
115 7
如何在 SQL Server 中使用 `OUTPUT` 子句
|
4月前
|
SQL 数据库
|
4月前
|
SQL 数据挖掘 关系型数据库
|
4月前
|
SQL
访问者模式问题之构造一个包含 select、from 和 where 子句的 SQL 节点树,如何解决
访问者模式问题之构造一个包含 select、from 和 where 子句的 SQL 节点树,如何解决
|
5月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第12天】SQL SELECT TOP 子句。
47 14
|
5月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第13天】SQL SELECT TOP 子句。
36 5
|
5月前
|
SQL 数据库
SQL WHERE 子句
【7月更文挑战第10天】SQL WHERE 子句。
44 4
|
6月前
|
SQL 关系型数据库 MySQL
SQL SELECT TOP, LIMIT, ROWNUM 子句
SQL SELECT TOP, LIMIT, ROWNUM 子句
39 2
SQL SELECT TOP, LIMIT, ROWNUM 子句
|
6月前
|
SQL 数据库
SQL HAVING 子句
SQL HAVING 子句
52 2
下一篇
无影云桌面