直接上sql完整的代码
(8)select(9)distinct t1.id,t1.name(1)from t_table1 t1 (3)join t_table2 t2(2)on t1.id = t2.id(4)where (5)group by (6)with (7)having (10)order by (11)limit
分析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,将结果返回