【问题标题】:SQL Double-Outer Join?SQL 双外连接?
【发布时间】:2010-12-06 09:32:31
【问题描述】:

我有两个表 A 和 B... A 和 B 可以通过一个公共列连接。 A 和 B 将有一些在连接列上匹配的行。但是 A 有一些 B 没有的行,B 有一些 A 没有的行。

从 A 到 B 的 LEFT OUTER JOIN 将给出 A 中的所有行,为无法匹配的 B 列填充 NULLS。 A RIGHT OUTER JOIN 给出 B 中的所有行,为无法匹配的 A 列填充 NULLS。

我想接收来自 A 和 B 的所有行,同时为仅在 B 中的行上的 A 列返回 NULL,为仅在 A 中的 B 列返回 NULL。

我知道我可以使用 UNION 以及 1 INNER + 1 LEFT + 1 RIGHT 来做到这一点,但是是否有一个 SELECT 查询可以实现这一点?

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    您可以为此使用FULL OUTER JOIN

    【讨论】:

      【解决方案2】:

      您想要一个完整的外部联接。不要尝试对 UNIONS 执行此操作 - 存在一些非常棘手的边缘情况,而且几乎不可能做到正确。

      语法在这里:

      http://msdn.microsoft.com/en-us/library/aa213228(SQL.80).aspx

      【讨论】:

        【解决方案3】:

        是的,LEFT ... UNION ... RIGHT 与 FULL OUTER JOIN 相同。

        【讨论】:

          猜你喜欢
          • 2014-12-04
          • 1970-01-01
          • 2010-09-05
          • 2013-03-13
          • 2021-10-08
          • 1970-01-01
          • 1970-01-01
          • 2021-01-31
          • 2021-09-02
          相关资源
          最近更新 更多