2010-07-31 79 views
2

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

SELECT * FROM Table1 
SELECT * FROM Table2 

我想了两个结果与列从附加到第一第二个结果结合起来。

表1和表2不以任何方式相互关联。如果表1有2列,表2有4列,我希望在单个结果集中总共返回6列。如果表1有4行,而表2只有2行,我希望NULLS在表2行中用于第3和第4行。

可能吗?

编辑:我不知道表1和表2中有多少列,所以不能将UNION与空值一起使用。

+1

这听起来像一个真正可怕的事情。你能解释为什么你认为这是一个好主意吗? – 2010-07-31 22:05:29

+0

我有一个要求,其中一个表被实际分成2个不同的表。在返回表格的值时,我想结合这些表格的结果并返回到UI。另一种选择是返回2个数据集,将数据表组合成单个数据集并使用它。只是想避免这一点。谢谢。 – tempid 2010-07-31 22:12:55

+2

@tempid。如果它被拆分,为什么它没有相同数量的行和非任意加入的行? – 2010-07-31 22:14:54

回答

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

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

如果你真的想要做到这一点,请在ROW_NUMBER()字段中加入两个结果集。

-2

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

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

我不知道Table1和Table2中有多少列,所以不能使用UNION。 – tempid 2010-07-31 22:05:03

0

不是一般的解决办法,但工程如果你知道你的架构:

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

我不认为这是他想要的。 – 2010-07-31 22:02:44