SQL 查询逻辑处理全解析
在 SQL 查询处理中,理解各个查询子句的逻辑处理顺序至关重要。下面将详细介绍 SQL 查询的逻辑处理步骤。
1. FROM 子句处理
如果 FROM 子句中出现多个表运算符,它们将按照从左到右的顺序进行处理,这至少是逻辑查询处理顺序的情况。每个表运算符的结果将作为下一个表运算符的左输入。最终的虚拟表将作为下一步的输入。
2. WHERE 阶段
WHERE 过滤器应用于上一步返回的虚拟表中的所有行。那些使 <where_predicate> 为 TRUE 的行组成了此步骤返回的虚拟表(VT2)。
注意事项 :
- 不能引用 SELECT 列表中创建的列别名,因为 SELECT 列表尚未处理。例如,不能写 SELECT YEAR(orderdate) AS orderyear ... WHERE orderyear > 2014 。
- 由于数据尚未分组,不能在此处使用分组聚合函数。例如,不能写 WHERE orderdate = MAX(orderdate) 。
示例 :
WHERE C.city = 'Madrid'
执行此过滤器后,来自 VT1 的客户 MRPHS 的行将被移除,因为其城市不是马德里,从而生成虚拟表 VT2,如下所示:
| C.custid | C
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



