执行顺序
-
FROM 哪张表
先去寻找表
-
JOIN 连接方式
连接
-
ON 连接条件
连接条件
-
WHERE 分组前条件
筛出条件
-
GROUP BY 分组(开始允许使用 SELCT 中的别名)
进行分组
-
HAVING 对结果集做筛选
分组后的筛出条件
-
SELECT 选择列
最终只显示选择的列
-
DISTINCT 去重
去重
-
ORDER BY 排序
排序操作
-
LIMIT 限制行
限制多少行显示
一些问题解释
-
为什么 where 后不能加聚合函数,但是 having 后可以加聚合函数?
答:通过 sql 语句中的执行顺序我们可以知道答案,我们有知道聚合函数计算是依赖于结果集的,但是按照 mysql 语句的执行顺序,ORDER BY 后才是结果集,因此只能放在 HAVING 中
-
为什么 where 后不能使用 select 中列的别名,但是 group by 后却可以?
答:同样是通过 sql 语句关键词的执行顺序我们知道,在 group by 之前别名不存在