在SQL Server 2008中组合两个表

时间:2011-10-06 00:41:11

标签: sql sql-server-2008 union

我需要问一下有什么方法可以将两个表组合成不同的列数,如:

Select a,b,c, from x

 union 

Select d, e from y

4 个答案:

答案 0 :(得分:3)

你需要做这样的事情

Select a,b,c from x

 union all  -- ALL doesn't filter dups and is faster

Select d, e, '' as f from y

我用过''但是你可能想要使用NULL或0,NULL将兼容所有数据类型,''不会

我还使用了UNION ALL而不是UNION,因为它不会表现更好,因为它不需要进行排序操作来摆脱重复

此处不需要别名f,因为top查询确定结果集中列的名称

答案 1 :(得分:1)

请注意

select a, b, c from x
union
select d, e, '' as f from y;

select d, e, '' as f from y
union
select a, b, c from x;

将产生不同的结果,即将使用来自第一个出现表的属性名称。

通过明确重命名第二个表中的列,可能更明确无误。

select a, b, c from x
union
select d AS a, e AS b, '' as c from y;

答案 2 :(得分:0)

select col1, col2, col3, col4
from mytable1
union all
select col5, col6, null as col7, '' as col8
from mytable2

答案 3 :(得分:0)

first table 
id
name
second table 
name 
seatno

如果你想加入名字&两个表中都有一些重复的名称,在连接查询中使用ROW_NUMBER!