几个表中的“合并”列

时间:2012-10-16 17:27:43

标签: sql-server-2008

使用SQL Server 2008,假设我有几个包含3个公共列(不相关)的表:

TABLE1

col1 colSomeOther col2 colAnotherOne

TABLE2

col1 colSomeOther col2 colAnotherOne

表3

col1 colSomeOther col2 colAnotherOne

我想创建一个视图,它合并上面3个表的col1和2。类似的东西:

查看

col1   col2

其中col1包含表1,2和3中的所有元素,而col2包含表1,2,3中col2的所有元素。

这可能吗?

2 个答案:

答案 0 :(得分:1)

是的。这是一个“联盟”;多个结果集具有相同的“签名”(数据列的数量和类型),一个接一个地连接在一起。执行此操作的查询非常简单:

SELECT col1, col2 FROM TABLE1
UNION ALL
SELECT col1, col2 FROM TABLE2
UNION ALL
SELECT col1, col2 FROM TABLE3

如果您希望查询“重复删除”结果,只返回唯一行,请忽略联合中的“ALL”关键字。使用ALL关键字,它只是将每个SELECT的结果添加到组合结果集中,包括Table2中可能与Table1具有完全相同数据的行。

答案 1 :(得分:0)

我认为你要求UNION

select col1, col2 from table1
UNION ALL
select col1, col2 from table2
UNION ALL
select col1, col2 from table3

只要col1col2在所有三个表中都具有兼容的数据类型,就应该有效。

如果您想消除重复的行,请使用UNION代替UNION ALL