大家好!我试图解决这个问题,但我不知道如何解决。我有两个表,我们称之为 TABLE_S 和 TABLE_G。在 TABLE_S 中我有一个 ID,在 TABLE_G 中我有两个 ID,ID1 和 ID2。
TABLE_S ID
TABLE_G ID1 ID2
我想要左连接,如果 TABLE_G_ID1 没有结果则左连接 TABLE_G_ID2
类似这样的:
Select * from TABLE_S
left join TABLE_G on TABLE_S.ID = TABLE_G.ID1 --if no result then:
on TABLE_S.ID = TABLE_G.ID2
我尝试过这个: 只有当第一个条件在连接中没有给出任何内容时,Oracle 才会尝试第二个条件
但是对我来说不起作用,并且有完全连接,而不是左连接
感谢您的建议!!
使用
AND
和 OR
:
SELECT *
FROM TABLE_S s
LEFT OUTER JOIN TABLE_G g
ON s.ID = g.ID1
OR ((s.ID != g.ID1 OR g.ID1 IS NULL) AND s.ID = s.ID2);
或使用
CASE
表达式:
SELECT *
FROM TABLE_S s
LEFT OUTER JOIN TABLE_G g
ON s.ID = CASE s.ID WHEN g.ID1 THEN g.ID1 ELSE g.ID2 END;