在SQL中组合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与空值一起使用。
如果你的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
这是可能的,但这可能是一个坏主意。为什么不只是运行两个查询?
如果你真的想要做到这一点,请在ROW_NUMBER()字段中加入两个结果集。
您可以匹配列,然后使用UNION,例如,
SELECT a, b, c, NULL, NULL, NULL FROM Table1
UNION
SELECT NULL, NULL, NULL, d, e, f FROM Table2
我不知道Table1和Table2中有多少列,所以不能使用UNION。 – tempid 2010-07-31 22:05:03
不是一般的解决办法,但工程如果你知道你的架构:
select a1, a2, null as b1, null as b2 from table1
union
select null as a1, null as a2, b1, b2 from table2
我不认为这是他想要的。 – 2010-07-31 22:02:44
这听起来像一个真正可怕的事情。你能解释为什么你认为这是一个好主意吗? – 2010-07-31 22:05:29
我有一个要求,其中一个表被实际分成2个不同的表。在返回表格的值时,我想结合这些表格的结果并返回到UI。另一种选择是返回2个数据集,将数据表组合成单个数据集并使用它。只是想避免这一点。谢谢。 – tempid 2010-07-31 22:12:55
@tempid。如果它被拆分,为什么它没有相同数量的行和非任意加入的行? – 2010-07-31 22:14:54