SQL HAVING用法笔记

来源:互联网 发布:淘宝网电脑主板 编辑:程序博客网 时间:2024/05/17 05:07

HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。
以mysql数据库的系统信息数据库INFORMATION_SCHEMA为例,INFORMATION_SCHEMA.KEY_COLUMN_USAGE视图标出当前数据库中所有被某些唯一约束、主键约束或者外键约束限制的字段。
如下操作显示了sakila数据库中含有多列索引的表。

SELECT TABLE_NAME, GROUP_CONCAT(COLUMN_NAME)FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_SCHEMA='sakila'GROUP BY TABLE_NAME, CONSTRAINT_NAMEHAVING COUNT(*) > 1;

操作结果如下:

+---------------+--------------------------------------+| TABLE_NAME    | GROUP_CONCAT(COLUMN_NAME)            |+---------------+--------------------------------------+| film_actor    | actor_id,film_id                     || film_category | film_id,category_id                  || rental        | rental_date,inventory_id,customer_id |+---------------+--------------------------------------+
0 0