使用DB2查询时,我需要使用多个where条件从表A中获取地址,当地址在表A中未知时,我需要使用多个where条件从表A和表B中获取临时地址。
两个表的公共字段都是Employee ID
条件应该是,
A.Emp-dept = xxx
A.Emp-state = yyy
B.Emp-code = zzz
B.Emp-proj = AAA
我尝试了以下查询
SELECT A.EMP_ID
A.EMP_ADDR,
A.EMP_DEPT,
B.EMP_CODE,
B.EMP_TEMP_ADDR
FROM TAB A
LEFT OUTER JOIN TAB B
ON A.EMP_ID = B.EMP_ID
WHERE A.Emp_dept = xxx
A.Emp_state = yyy
B.Emp_code = zzz
B.Emp_proj = AAA
ORDER BY EMP_ID
但此查询不起作用,结果为0行
预期结果
https://dbfiddle.uk/s7zr35wU
1条答案
按热度按时间bwitn5fc1#
如果表B中可能有行,也可能没有行,那么您需要将筛选器放在
ON
子句中,而不是放在WHERE
子句中。将它放在WHERE
子句中,基本上就是将表B视为INNER JOIN而不是LEFT JOIN,因为它使用ON条件将两个表连接在一起,然后使用WHERE条件将其筛选出来。你需要这样的东西:
这里假设您至少要从表A中获取一行(地址为NULL或其他),如果不是这样,您可能需要使用FULL OUTER JOIN来代替LEFT OUTER JOIN。