分组查询group by、having注意事项有哪些
注:本文以下内容基于MySQL 5.7 I nnoDB数据库引擎。
score_table中的数据:
语法执行顺序
所有SQL语法遵循以下语法顺序
(MySQL引擎校对你的SQL语法是否正确):
1.select
2.from
3.where
4.group by
5.having
6.order by
7.limit
1.group by之后不能加where
2.having或group by都可单独使用
单独使用having的效果和where类似,但是和where有细微区别
where和having的不同:
1.having可以使用别名,而where不可以使用别名
2.where可以使用select中未出现的列进行条件筛选,而having不行
3.having和group by都可使用别名
面试题:
为什么MySQL group by和having中可以使用别名?
答:这是因为MySQL5.7.5之后做了一个特殊的处理,允许在group by 和having中使用别名,也就是在MySQL5.7.5之后,按照select的执行顺序来说的话,group by 和having中是不能使用别名的