直接上sql完整的代码sql
(8)select (9)distinct t1.id,t1.name (1)from t_table1 t1 (3)<join_type> join t_table2 t2 (2)on t1.id = t2.id (4)where <where condition> (5)group by <group_by condition> (6)with <cube | rollup> (7)having <having condition> (10)order by <order_by condition> (11)limit <limit condition>
分析sql处理的每一个阶段
1.from:对from后面的表进行笛卡尔积,产生虚表VT1
2.on:对虚表VT1进行on筛选,产生虚表VT2
3.join:若是是inner join,则直接产生VT3==VT2,若是是outer join(即left join或right join或full join),那须要按照外部连接规则,将VT1中没有匹配到的数据添加到VT2,产生VT3
4.where:对虚表VT3进行where过滤,符合条件的数据被记录到虚表VT4中
5.group by:对虚表VT4进行分组操做,产生VT5
6.cube | rollup:对虚表VT5进行cube或rollup操做,产生虚表VT6
7.having:对虚表VT6进行having过滤,产生VT7
8.select:执行select操做,选择虚表VT7中指定的列,插入到虚表VT8中
9.distinct:对虚表VT8进行去重操做,产生虚表VT9
10.order by:对虚表VT9进行排序,产生虚表VT10
11.limit:抽出指定行的记录,产生虚表VT11,将结果返回code