我需要问一下有什么方法可以将两个表组合成不同的列数,如:
Select a,b,c, from x
union
Select d, e from y
答案 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!