SQL 逻辑查询处理详解
在 SQL 查询中,了解查询子句的逻辑处理顺序至关重要,它能帮助我们更好地理解查询的执行过程,避免常见的错误。下面将详细介绍 SQL 逻辑查询处理的各个阶段。
1. FROM 子句处理
如果 FROM 子句中出现多个表运算符,它们会按照从左到右的顺序进行处理,这是逻辑查询处理的顺序。每个表运算符的结果会作为下一个表运算符的左输入,最终的虚拟表将作为下一步的输入。
2. WHERE 阶段
WHERE 过滤器会应用到上一步返回的虚拟表的所有行。只有满足 <where_predicate> 为 TRUE 的行才会构成这一步返回的虚拟表(VT2)。
需要注意的是,不能在 WHERE 阶段引用 SELECT 列表中创建的列别名,因为 SELECT 列表还未处理。例如,不能这样写: SELECT YEAR(orderdate) AS orderyear ... WHERE orderyear > 2014 。同时,由于数据还未分组,也不能使用分组聚合函数,如 WHERE orderdate = MAX(orderdate) 。
下面是一个示例查询:
WHERE C.city = 'Madrid'
执行该查询后
超级会员免费看
订阅专栏 解锁全文
5039

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



