SQL:级联UNION和JOIN

Lop*_*poc 5 sql union join

我在两个表之间有一个联合操作

SELECT ID_1,
       name_1,
       surname_1,
  FROM T_ONE
 UNION
SELECT ID_2,
       name_2,
       surname_2
  FROM TABLE_2
Run Code Online (Sandbox Code Playgroud)

我想将此UNION操作的结果与另一个表或甚至所有表连接起来TABLE_1.

我该如何处理这个新表的结果UNION.

例如在上一个之后UNION:

RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2
Run Code Online (Sandbox Code Playgroud)

我真的不知道我需要放什么代替XXXXXXXXXXXXXXXX来安装由...生成的新表UNION.

gbn*_*gbn 14

在这里使用像"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
Run Code Online (Sandbox Code Playgroud)

PS.使用LEFT连接:减少混乱然后RIGHT连接.

  • 我会使用UNION ALL而不仅仅是UNION,以避免对结果进行排序,因为你知道它们是不同的(来自表T_ONE和TABLE_2的数据不重叠,是吗?) (2认同)