在mysql的数据库sakila下,执行下面一段代码
select p.customer_id ,sum(p.amount) as sum_amount
from payment p
-- where p.amount > 5
group by p.customer_id
having sum_amount>100
order by sum_amount desc
执行结果如下:
having中使用了select中的别名sum_amount,但是SQL的执行顺序是:
(7)select
(8)distinct 字段名1,字段名2...
(5)[fun 字段名]
(1)from 表名
(2)inner|left|right|full|cross join on 连接条件
(3)where 筛选条件
(4)group by 分组条件
(6)having 分组后的筛选条件
(9)order by 排序条件
(10)limit <起始偏移量,条目数>
在mysql 5.7.5之前的版本,ONLY_FULL_GROUP_BY sql mode默认不开启。在5.7.5或之后的版本默认开启。
如果ONLY_FULL_GROUP_BY sql mode不开启,那么mysql对标准SQL的扩展可以生效。
参考链接:https://blog.csdn.net/weixin_51210725/article/details/124686426