美文网首页
MySQL的having子句详解

MySQL的having子句详解

作者: LannisterWF | 来源:发表于2018-08-03 21:37 被阅读0次

示例使用的是MySQL官方数据库sakila

having子句一直是我认为比较难以理解的玩意,但是既然用到了就要把这个玩意弄清楚。

having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。having和where的作用类似,都是提供一个筛选条件。但是这两者最大的不同是where判断的是真实读取的数据,having判断的是调用一些聚合函数计算之后得到的数据。

例如having的一个应用场景

select customer_id,sum(amount) from payment 

group by customer_id

having sum(amount)>100

limit 10;

结果如下

这个having的作用是只显示sum(amount)在100以上的行,此时不能用where,因为sum(amount)并不存在于原表中,这个值是算出来的。

having和where的不同

1.WHERE 子句作用于表和视图,HAVING 子句作用于组。

2.having一般跟在group by之后,执行记录组选择的一部分来工作的。where则是执行所有数据来工作的。

3.where中不能用聚合函数,having总是包含聚合函数。

相关文章

  • MySQL的having子句详解

    示例使用的是MySQL官方数据库sakila having子句一直是我认为比较难以理解的玩意,但是既然用到了就要把...

  • MySQL HAVING子句

    在本教程中,我们将学习如何使用MySQL HAVING子句来指定行分组或聚合的过滤条件。MySQL HAVING子...

  • ⑥MYSQL(having子句、order by子句、limit

    mysql.exe -h localhost -P 3306 -u root -puse mydb;—— 进入数据...

  • mysql的查询、子查询及连接查询

    一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order ...

  • 2020-07-15 SQL刷题笔记一

    having 子句 having子句既可包含聚合函数作用的字段也可包括普通的标量字段 having子句必须于gro...

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • HAVING子句

    有重复的数据行,才有分组并统计的可能性。如果没有重复的数据行,就没有分组的意义。SELECT子句中只能出现分组字段...

  • having子句

    原因:存在HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 要求: (1)having子句中的...

  • sqlite(17)-Having子句

    Having子句允许指定条件来过滤将出现在最终结果的分组结果。WHERE子句在所选列上设置条件,而Having子句...

  • SQLite Having 子句

    SQLite Having 子句 HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。 WHERE ...

网友评论

      本文标题:MySQL的having子句详解

      本文链接:https://www.haomeiwen.com/subject/phcuvftx.html