对于这样的子查询,首先执行什么选择?
SELECT name, salary, dept_id
FROM employee
WHERE salary >
( SELECT AVG(salary) FROM employee
WHERE dept_no =
( SELECT dept_no FROM employee
WHERE last_name =
( SELECT last_name FROM employee
WHERE salary > 50000))) ;
这:SELECT last_name FROM employee
?
答案 0 :(得分:1)
SQL是声明性语言,而不是过程语言。也就是说,查询不指定执行路径,它指定结果集的逻辑。因此,任何查询都可以首先“执行”,具体取决于SQL优化器决定做什么。
也就是说,理解查询逻辑可能比理解它的执行方式更重要(至少在这个阶段)。您的查询都是不相关的,因此您实际上可以从最里面或最外层开始,然后从那里开始工作。类似的东西:
查询执行的方式是否无关紧要。这样的东西就是查询将返回的内容。