SQL Double-Outer Join?

时间:2009-10-13 16:45:30

标签: sql-server tsql

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

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

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

我知道我可以使用UNION以及1 INNER + 1 LEFT + 1 RIGHT,但是有一个SELECT查询可以实现吗?

3 个答案:

答案 0 :(得分:12)

您可以使用FULL OUTER JOIN

答案 1 :(得分:3)

您需要完整的外部联接。不要尝试使用UNIONS - 有一些非常棘手的边缘情况,并且几乎不可能做对。

语法在这里:

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

答案 2 :(得分:2)

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