美文网首页
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子句详解

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