MySQL中的having和where的区别

简介: 总之,`WHERE` 用于过滤原始数据,`HAVING` 用于在 `GROUP BY` 后对聚合数据进行筛选。它们分别适用于不同的查询需求。

HAVINGWHERE 是 MySQL 查询语句中用于筛选数据的两个关键字,它们之间的区别如下:

  1. 作用范围:

    • WHERE:用于在执行 SELECT 语句时,在从表中选择行之前进行筛选,基于行的原始数据进行过滤。
    • HAVING:用于在执行 SELECT 语句时,对分组后的结果进行筛选,基于聚合后的数据进行过滤。
  2. 使用场景:

    • WHERE:常用于过滤单独的行,例如筛选特定日期、价格范围等条件。
    • HAVING:常用于对分组后的结果进行过滤,例如在使用 GROUP BY 子句后,对分组后的结果进行聚合函数筛选。
  3. 使用对象:

    • WHERE:作用于行级数据,即对表中的每一行进行判断。
    • HAVING:作用于分组后的数据,即对聚合函数计算后的结果进行判断。
  4. 使用顺序:

    • WHERE:通常在查询的最开始使用,用于过滤原始数据。
    • HAVING:在使用 GROUP BY 子句后,对分组后的数据进行聚合函数计算,然后在 HAVING 中筛选。

总之,WHERE 用于过滤原始数据,HAVING 用于在 GROUP BY 后对聚合数据进行筛选。它们分别适用于不同的查询需求。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
存储 关系型数据库 MySQL
ES的全文索引和MySQL的全文索引有什么区别?如何选择?
【8月更文挑战第26天】ES的全文索引和MySQL的全文索引有什么区别?如何选择?
27 5
|
19天前
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 `HAVING` 子句
【8月更文挑战第12天】
32 1
在 MySQL 中使用 `HAVING` 子句
|
15天前
|
前端开发 关系型数据库 MySQL
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
这篇文章讨论了`com.mysql.jdbc.Driver`和`com.mysql.cj.jdbc.Driver`两个MySQL驱动类的区别,指出`com.mysql.jdbc.Driver`适用于MySQL 5的`mysql-connector-java`版本,而`com.mysql.cj.jdbc.Driver`适用于MySQL 6及以上版本的`mysql-connector-java`。文章还提到了在实际使用中如何根据MySQL版本选择合适的驱动类。
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
|
20天前
|
存储 SQL 关系型数据库
OceanBase与MySQL有何区别?
【8月更文挑战第12天】OceanBase与MySQL有何区别?
32 3
|
3天前
|
SQL 关系型数据库 MySQL
Mysql中from多表跟join表的区别
Mysql中from多表跟join表的区别
14 0
|
4天前
|
关系型数据库 MySQL
Mysql中count(1)、count(*)以及count(列)的区别
Mysql中count(1)、count(*)以及count(列)的区别
14 0
|
7天前
|
关系型数据库 MySQL 数据库
MySQL MVCC和间隙锁有什么区别?
【8月更文挑战第24天】MySQL MVCC和间隙锁有什么区别?
19 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
2月前
|
JSON 关系型数据库 MySQL
MySQL 5.x和8.0区别
性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。
45 3
|
2月前
|
关系型数据库 MySQL 数据库
MySQL:union all与union区别详解
MySQL:union all与union区别详解
下一篇
云函数