完整内容查询:http://www.cnblogs.com/MR_ke/archive/2011/05/29/2062085.html#commentform
一:查询的逻辑执行顺序
(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>
(8) SELECT (9) DISTINCT (11) < top_specification> <select _list>
(10) ORDER BY < order_by_list>
二:执行顺序
1.FROM:对FORM子句中前两个表执行笛卡尔积生成虚拟表vt1
2.ON:对vt1表应用ON筛选器只有满足< join_condition>为true的行才被插入vt2
3.OUTER(join):如果指定了OUTER JOIN 保留表(preserved table)中未找到的行将行作为外部行添加到vt2生成vt3,如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤1和步骤2直至结束
4.WHERE:对vt3应用WHERE筛选器只有使<where_condition>为true的行才被插入vt4
5.GROUP BY:按GROUP BY 子句中的列列表对vt4中的行分组生成vt5
6.CUBE | ROLLUP:把超组(supergroups)插入vt5 生成vt6
7.HAVING:对vt6应用HAVING筛选器只有使< having_condition>为true的组才插入vt7
8.SELECT:处理select列表产生vt8
9.DISTINCT:把重复的行从vt8中去除产生vt9
10.ORDER BY:将vt9的行按order by 子句中的列表排序生成一个游标vc10
11.TOP:从vc10的开始处选择指定数量或比例的行,生成vt11,并返回调用者。