一、执行顺序
1. FROM Table
先划定范围,在哪个表中执行。其中包括JOIN和ON也是在第一步进行联结其他表的。
2. WHERE
条件筛选
3. GROUP BY
分组
4. 聚集函数计算
例如,COUNT,SUM,AVG等函数
5. HAVING 筛选分组
这里要注意having和where的区别,主要有以下几点:
a)WHERE在分组前进行过滤,而HAVING在分组后过滤
b)WHERE条件中不可以使用聚合函数,如COUNT(*),但HAVING中可以
c)WHERE针对数据库文件进行过滤,而HAVING是针对已查询的字段进行过滤。也就是说,如果前面SELECT没有选择对应的字段,直接使用HAVING会报错,WHERE就不会。如果是要过滤前面SELECT已选的字段,那么既可以用HAVING也可以用WHERE。
6. 计算表达式
布尔表达式、时间表达式等
7. SELECT
包括 SELECT DISTINCT
8. ORDER BY
对结果集排序。(默认)ASC、DESC。
9. LIMIT
限制查询结果返回数量,比如,求订单最多的5个客户,价格最高的5个商品等。
二、关键字顺序
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...