我在两张 table 之间有联合手术

SELECT ID_1,
       name_1,
       surname_1,
  FROM T_ONE
 UNION
SELECT ID_2,
       name_2,
       surname_2
  FROM TABLE_2

我想将此UNION操作的结果与另一个表甚至所有TABLE_1一起加入。

如何处理UNION的新表结果。

例如在上一个UNION之后:
RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2

我真的不知道需要什么来代替XXXXXXXXXXXXXXXX来处理由UNION生成的新表。

最佳答案

在此使用派生表,例如“foo”,然后再次联接,但是您希望:

SELECT
    *
FROM
    TABLE_3
    LEFT JOIN
    (
    SELECT ID_1, name_1, surname_1, FROM T_ONE
    UNION --ALL would be more efficient if results do not overlap, as van's comment said
    SELECT ID_2, name_2, surname_2 FROM TABLE_2
    ) foo  ON TABLE_3.ID_3 = foo.ID_1

PS。使用LEFT联接:比RIGHT联接少困惑。

关于SQL:级联UNION和JOIN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1418431/

10-15 23:59