PL_SQL 对我来说很难加入 - 第二个表中的动态 ID

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

大家好!我试图解决这个问题,但我不知道如何解决。我有两个表,我们称之为 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 才会尝试第二个条件

但是对我来说不起作用,并且有完全连接,而不是左连接

感谢您的建议!!

oracle left-join resultset
1个回答
0
投票

使用

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;
© www.soinside.com 2019 - 2024. All rights reserved.