一、执行顺序
需要明确:以下每个步骤都会产生一张虚拟表,然后通过某种条件转入下一步骤
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
-- 1-3 是解析全部表数据,通过on条件消除笛卡尔积,得到虚拟表t1
-- 4 是将t1的结果按where条件筛选,得出虚拟表t2
-- 5 是将t2进行分组,得到虚拟表t3
-- 6 目前不知道
-- 7 将分组后的结果集t3进行条件筛选,得到结果集t4
-- 8 筛选需要的字段,得到t5
-- 9 去掉重复行,得到t6
-- 10 进行排序,得到t7
-- 11 指定返回多少行,得到t8