版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
如下所示SQL语句展示了逻辑查询的处理顺序
步骤1 FROM:查询语句中from语句中的两个表进行交叉连接,生成虚拟表V1
步骤2 ON:筛选器ON应用到V1上并把满足条件的行插入虚拟表V2
步骤3 OUTER(join):如果SQL语句中选择了OUTER JOIN则将其余的行也插入V2,生成虚拟表V3,如果join语句中存在多个table,则重复以上步骤
步骤4 WHERE:根据条件筛选相应的行插入至虚拟表V4
步骤7 HAVING:根据条件筛选相应的行插入至虚拟表V7
步骤11 TOP:保留前几条记录并返回结果
我们可以通过一个具体实例说明问题
需要使用的query语句如下:
第一步,两个table连接并生产一个28行的虚拟表V1(4*7)洳下
第二步,判断ON的条件生产虚拟表V2如下
第三步,添加OUTER JOIN的结果如下
第四步,执行WHERE条件判断如下
第五步,执行GROUP排序如下
第七步,执荇HAVING条件如下
第八步,执行SELECT如下
0 |
第十步,执行ORDER BY如下
0 |