组合两个SELECT查询

时间:2015-06-17 13:20:12

标签: sql tsql

我正在使用Transact-SQL(Microsoft SQL Server 2012)。

我尝试组合以下两个SELECT语句,以便z中的行将添加到x和y的并集旁边。

但我还没有运气。

The two SELECT statements are:

SELECT x.a, x.b, x.c
FROM x
UNION ALL
SELECT y.a y.b, y.c
FROM y

SELECT z.d, z.e, z.f, z.g
FROM x
FULL OUTER JOIN z
ON (x.h = z.h)
FULL OUTER JOIN y
ON (y.h = z.h)

所有三个表(x,y和z)都包含'h'行。

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试在输出中获得七列,我们可以这样做:

SELECT x.a, x.b, x.c, z.d, z.e, z.f, z.g
FROM x
FULL OUTER JOIN z
ON (x.h = z.h)
FULL OUTER JOIN y
ON (y.h = z.h)
UNION ALL
SELECT y.a y.b, y.c, z.d, z.e, z.f, z.g
FROM y
FULL OUTER JOIN z
ON (y.h = z.h)
FULL OUTER JOIN x
ON (y.h = x.h)

除非您需要在两个查询中加入所有三个表,否则可以缩短为:

SELECT x.a, x.b, x.c, z.d, z.e, z.f, z.g
FROM x
FULL OUTER JOIN z
ON (x.h = z.h)
UNION ALL
SELECT y.a y.b, y.c, z.d, z.e, z.f, z.g
FROM y
FULL OUTER JOIN z
ON (y.h = z.h)

您还应评估是否确实需要外连接。只有在您不希望匹配值始终位于两个表中时才需要这样做。