SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

第3章 聚合与排序:3-3 为聚合结果指定条件

使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句。
聚合函数可以在SELECT子句、 HAVING子句和ORDER BY子句中使用。
WHERE子句用来指定数据行的条件, HAVING子句用来指定分组的条件


 ■ HAVING子句

■ HAVING子句的构成要素

■ 相对于HAVING子句,更适合写在WHERE子句中的条件

笔者认为,聚合键所对应的条件还是应该书写在 WHERE 子句之中。
理由有两个。
首先,根本原因是 WHERE 子句和 HAVING 子句的作用不同。如前所述, HAVING 子句是用来指定“组”的条件的。
因此,记录“行”所对应的条件还是应该写在 WHERE 子句当中。这样一来,书写出的 SELECT 语句不但可以分清两者各自的功能,理解起来也更加容易。

WHERE 子句 = 指定行所对应的条件
HAVING 子句 = 指定组所对应的条件
其次,对初学者来说,研究 DBMS 的内部实现这一话题有些深奥,这里就不做介绍了,感兴趣的读者可以参考随后的专栏——WHERE 子句和 HAVING 子句的执行速度。

posted @ 2020-01-22 09:05  Marlon康  阅读(177)  评论(0编辑  收藏  举报