使用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的所有元素。
这可能吗?
答案 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
只要col1
和col2
在所有三个表中都具有兼容的数据类型,就应该有效。
如果您想消除重复的行,请使用UNION
代替UNION ALL
。