哪个表是此查询中的“左”

时间:2011-12-20 02:37:46

标签: sql

SELECT department_name AS dept_name,
       last_name, project_number
FROM departments dpt
    JOIN employee emp
        ON dpt.department_number = emp.department_number
    LEFT JOIN projects prj
        ON emp.employee_id = prj.employee_id
ORDER BY department_name

所以我对LEFT JOIN部分以及它是如何工作感到困惑,因为它是第二个连接。是“左”表员工还是部门?

3 个答案:

答案 0 :(得分:7)

“左”方实际上是加入departmentsemployee的结果。联接是左关联的,因此x JOIN y JOIN z等同于(x JOIN y) JOIN z

答案 1 :(得分:3)

这两者都是。或者,“左”侧是连接之前的连接表达式的结果。

实际上,查询优化器可能会对某些内容进行重新排序。但是从逻辑的角度来看,假设查询从开始到结束一次一个地运行每个表达式,每个新的连接表达式使用到目前为止为操作的左侧计算的整个结果。优化器可能决定交换两个连接,或者从之前的where子句应用过滤器,但它永远不会以改变结果关系的方式执行此操作。

答案 2 :(得分:0)

此查询假设每个部门至少有一名员工,而员工将拥有零个或多个项目。

相关问题