mysql having关键字怎么用
在mysql中,having关键字需要和SELECT语句一起使用,用于对分组后的数据进行过滤,语法“SELECT {*|字段列名} FROM 数据表名 HAVING 查询条件;”。
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
MySQL HAVING:过滤分组
在 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 语句和运行结果如下。
mysql> SELECT name,sex FROM tb_students_info -> WHERE height>150; +--------+------+ | name | sex | +--------+------+ | Dany | 男 | | Green | 男 | | Henry | 女 | | Jane | 男 | | Jim | 女 | | John | 女 | | Lily | 男 | | Susan | 男 | | Thomas | 女 | | Tom | 女 | +--------+------+ 10 rows in set (0.00 sec) mysql> SELECT name,sex FROM tb_students_info HAVING height>150; ERROR 1054 (42S22): Unknown column 'height' in 'having clause'
由结果可以看出,如果 SELECT 关键字后没有查询出 HAVING 查询条件中使用的 height 字段,MySQL 会提示错误信息:“having子句”中的列“height”未知”。
例 3
根据 height 字段对 tb_students_info 表中的数据进行分组,并使用 HAVING 和 WHERE 关键字分别查询出分组后平均身高大于 170 的学生姓名、性别和身高。SQL 语句和运行结果如下。
mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info -> GROUP BY height -> HAVING AVG(height)>170; +--------------------+------+--------+ | GROUP_CONCAT(name) | sex | height | +--------------------+------+--------+ | John | 女 | 172 | | Jim | 女 | 175 | | Thomas | 女 | 178 | | Henry | 女 | 185 | +--------------------+------+--------+ 4 rows in set (0.00 sec) mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info WHERE AVG(height)>170 GROUP BY height; ERROR 1111 (HY000): Invalid use of group function
由结果可以看出,如果在 WHERE 查询条件中使用聚合函数,MySQL 会提示错误信息:无效使用组函数。
【相关推荐:mysql视频教程】
以上是mysql having关键字怎么用的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

有效监控 Redis 数据库对于保持最佳性能、识别潜在瓶颈和确保整体系统可靠性至关重要。 Redis Exporter Service 是一个强大的实用程序,旨在使用 Prometheus 监控 Redis 数据库。 本教程将指导您完成 Redis Exporter Service 的完整设置和配置,确保您无缝建立监控解决方案。通过学习本教程,您将实现完全可操作的监控设置

SQL数据库错误查看方法有:1. 直接查看错误消息;2. 使用SHOW ERRORS和SHOW WARNINGS命令;3. 访问错误日志;4. 使用错误代码查找错误原因;5. 检查数据库连接和查询语法;6. 使用调试工具。

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。
