【问题标题】:Inner joining on multiple tables but only selecting one在多个表上进行内部连接,但只选择一个
【发布时间】:2018-09-13 00:41:06
【问题描述】:

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

类似...

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 中的一个。

【问题讨论】:

  • 那么您的具体问题是什么?
  • 您可以将它们合并到一个子查询中并选择它。但是......您可能会失去任何索引收益。你现在这样做的方式有什么问题。您可以在 SELECT 子句中使用 COALESCE() 来组合 ab 之间共有的字段。最终,我不确定您的问题/问题是什么。
  • 如果添加样本数据和预期输出数据,会更容易回答

标签: sql inner-join


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2012-06-28
    • 2022-01-19
    • 2011-12-13
    • 2020-10-25
    相关资源
    最近更新 更多