我用谷歌搜索了相关子查询,它给了我下面的例子。然而,在外部查询中,该部门 id 将由动态工资确定,而动态工资又由外部查询中的
department_id
和内部查询中的 department_id
之间的关系确定。这看起来是一个非常循环的逻辑。工资还没确定的情况下,两个department_id怎么可能有关系呢?
您混淆了操作顺序。相关子查询本质上是一个连接;原则上它将对所有行执行(尽管实际上通常会进行一些优化)在应用 where 条件之前。
相当于吗
select e.salary, e.department_id
from employees e
join (
select department_id, avg(salary) avg_salary
from employees
group by department_id
) department_average
using (department_id)
where e.salary > department_average.salary
也让你困惑吗?