在SQL中合并2个结果集?

时间:2010-07-31 21:56:24

标签: sql

如何组合结果集以在SQL中返回单个结果?例如 -

SELECT * FROM Table1
SELECT * FROM Table2

我想将两个结果集与附加到第一个结果集的第二个结果集中的列组合在一起。

表1和表2以任何方式彼此无关。如果表1有2列,表2有4列,我想在一个结果集中返回总共6列。如果表1有4行而表2只有2行,我希望表2中的NULLS为第3行和第4行。

有可能吗?

编辑:我不知道Table1和Table2中有多少列,因此不能将UNION与空值一起使用。

4 个答案:

答案 0 :(得分:7)

如果您的RDBMS支持ROW_NUMBER(),您可以执行类似的操作。

WITH T1 AS
(
SELECT *, ROW_NUMBER() OVER ( ORDER BY T1id) AS RN1 FROM Table1
),
T2 AS
(
SELECT *, ROW_NUMBER() OVER ( ORDER BY T2id) AS RN2 FROM Table2
)


SELECT * FROM T1 FULL OUTER JOIN T2 ON RN1 =RN2

答案 1 :(得分:1)

这是可能的,但这样做可能是个坏主意。为什么不运行两个查询?

如果确实想要这样做,请在ROW_NUMBER()字段中加入两个结果集。

答案 2 :(得分:0)

不是一般解决方案,但如果您了解您的架构,则有效:

select a1, a2, null as b1, null as b2 from table1
union
select null as a1, null as a2, b1, b2 from table2

答案 3 :(得分:-2)

您可以匹配列,然后使用UNION,例如

SELECT a, b, c, NULL, NULL, NULL FROM Table1
UNION
SELECT NULL, NULL, NULL, d, e, f FROM Table2