内部连接多个表但只选择一个

时间:2018-04-03 15:52:00

标签: sql inner-join

我正在将两个不同的表连接到我的原始表,但我想只在两个中的一个上进行内连接(取决于它是否包含匹配的键)。基本上,正在连接的两个表都不可能与原始表具有相同的记录。我最多需要一个。

像...一样的东西。

SELECT
t.Id,
t.column1,
t.column2,
a.column3 as ‘Column 3’,
b.column4 as ‘Column x’,
s.column5,
t.column6
FROM “Table1” t
INNER JOIN “Table2” a on a.Id = t.Id
INNER JOIN “Table3” b on b.Id = t.Id

如果该特定表中存在Id,则只应加入2或3中的一个。

1 个答案:

答案 0 :(得分:1)

您可以使用left join

SELECT t.*,
       a.column3 as Column3,
       b.column4 as Columnx
FROM Table1 t LEFT JOIN 
     Table2 a 
     ON a.Id = t.Id LEFT JOIN
     Table3 b 
     ON b.Id = t.Id;

这通常与coalesce()

一起使用
SELECT t.*, coalesce(a.col1, b.col1) as col1
FROM Table1 t LEFT JOIN 
     Table2 a 
     ON a.Id = t.Id LEFT JOIN
     Table3 b 
     ON b.Id = t.Id;