相关子查询似乎使用循环逻辑

问题描述 投票:0回答:1

我用谷歌搜索了相关子查询,它给了我下面的例子。然而,在外部查询中,该部门 id 将由动态工资确定,而动态工资又由外部查询中的

department_id
和内部查询中的
department_id
之间的关系确定。这看起来是一个非常循环的逻辑。工资还没确定的情况下,两个department_id怎么可能有关系呢?

mysql correlated-subquery
1个回答
0
投票

您混淆了操作顺序。相关子查询本质上是一个连接;原则上它将对所有行执行(尽管实际上通常会进行一些优化)在应用 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

也让你困惑吗?

© www.soinside.com 2019 - 2024. All rights reserved.