MySQL HAVING:过滤分组说明
发布时间:2021-06-03 12:32:43 所属栏目:编程 来源:互联网
导读:在 MySQL 中,可以行使 HAVING 要害字对分组后的数据举办过滤。 行使 HAVING 要害字的语法名目如下: HAVING 查询前提 HAVING 要害字和 WHERE 要害字都可以用来
在 MySQL 中,可以行使 HAVING 要害字对分组后的数据举办过滤。 行使 HAVING 要害字的语法名目如下: HAVING <查询前提> HAVING 要害字和 WHERE 要害字都可以用来过滤数据,且 HAVING 支持 WHERE 要害字中全部的操纵符和语法。 可是 WHERE 和 HAVING 要害字也存在以下几点差别: 一样平常环境下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。 WHERE 查询前提中不行以行使聚合函数,而 HAVING 查询前提中可以行使聚合函数。 WHERE 在数据分组前举办过滤,而 HAVING 在数据分组后举办过滤 。 WHERE 针对数据库文件举办过滤,而 HAVING 针对查询功效举办过滤。也就是说,WHERE 按照数据表中的字段直接举办过滤,而 HAVING 是按照前面已经查询出的字段举办过滤。 WHERE 查询前提中不行以行使字段别名,而 HAVING 查询前提中可以行使字段别名。 下面通过实例让各人更直观的相识 WHERE 和 HAVING 要害字的沟通点和差异点。 例 1 别离行使 HAVING 和 WHERE 要害字查询出 tb_students_info 表中身高峻于 150 的门生姓名,性别和身高。SQL 语句和运行功效如下。 mysql> SELECT name,sex,height FROM tb_students_info -> HAVING height>150; +--------+------+--------+ | name | sex | height | +--------+------+--------+ | Dany | 男 | 160 | | Green | 男 | 158 | | Henry | 女 | 185 | | Jane | 男 | 162 | | Jim | 女 | 175 | | John | 女 | 172 | | Lily | 男 | 165 | | Susan | 男 | 170 | | Thomas | 女 | 178 | | Tom | 女 | 165 | +--------+------+--------+ 10 rows in set (0.00 sec) mysql> SELECT name,sex,height FROM tb_students_info -> WHERE height>150; +--------+------+--------+ | name | sex | height | +--------+------+--------+ | Dany | 男 | 160 | | Green | 男 | 158 | | Henry | 女 | 185 | | Jane | 男 | 162 | | Jim | 女 | 175 | | John | 女 | 172 | | Lily | 男 | 165 | | Susan | 男 | 170 | | Thomas | 女 | 178 | | Tom | 女 | 165 | +--------+------+--------+ 10 rows in set (0.00 sec) 上述实例中,由于在 SELECT 要害字后已经查询出了 height 字段,以是 HAVING 和 WHERE 都可以行使。可是假如 SELECT 要害字后没有查询出 height 字段,MySQL 就会报错。 例 2 行使 HAVING 和 WHERE 要害字别离查询出 tb_students_info 表中身高峻于 150 的门生姓名和性别(与例 1 对比,这次没有查询 height 字段)。SQL 语句和运行功效如下。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |