在嵌套子查询中首先执行什么选择?

时间:2017-01-25 16:45:54

标签: sql subquery

对于这样的子查询,首先执行什么选择?

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

1 个答案:

答案 0 :(得分:1)

SQL是声明性语言,而不是过程语言。也就是说,查询不指定执行路径,它指定结果集的逻辑。因此,任何查询都可以首先“执行”,具体取决于SQL优化器决定做什么。

也就是说,理解查询逻辑可能比理解它的执行方式更重要(至少在这个阶段)。您的查询都是不相关的,因此您实际上可以从最里面或最外层开始,然后从那里开始工作。类似的东西:

  • 让所有薪水
  • 的员工
  • 大于部门的平均工资
  • 具有相同姓氏的员工
  • 薪水大于50,000

查询执行的方式是否无关紧要。这样的东西就是查询将返回的内容。