Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将3个表合并为一个表_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 将3个表合并为一个表

Sql server 将3个表合并为一个表,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有三个表具有完全相同的列,唯一的区别是这些列中的数据。我想知道是否应该(以及如何)将这些列合并到一个表中。我知道,如果合并两个表,数据可以通过布尔值区分,但三个表是否也可以这样做 如果列和数据类型相同,则可以使用联合所有查询 select col1, col2, 'table1' as src from table1 union all select col1, col2, 'table2' as src from table2 union all select col1, col2, 'ta

我有三个表具有完全相同的列,唯一的区别是这些列中的数据。我想知道是否应该(以及如何)将这些列合并到一个表中。我知道,如果合并两个表,数据可以通过布尔值区分,但三个表是否也可以这样做


如果列和数据类型相同,则可以使用
联合所有
查询

select col1, col2, 'table1' as src
from table1
union all
select col1, col2, 'table2' as src
from table2
union all
select col1, col2, 'table3' as src
from table3
此版本将包含任何重复记录,如果您不想要重复记录,则可以使用
UNION
删除任何重复记录


如果数据类型不相同,则需要将数据转换为相同的类型。

如果列和数据类型相同,则可以使用
UNION ALL
查询

select col1, col2, 'table1' as src
from table1
union all
select col1, col2, 'table2' as src
from table2
union all
select col1, col2, 'table3' as src
from table3
此版本将包含任何重复记录,如果您不想要重复记录,则可以使用
UNION
删除任何重复记录


如果数据类型不同,则需要将数据转换为相同的类型。

我将添加一列,以显示数据来自哪个源表,尤其是当这将用于提供某种“合并”表时。@AaronBertrand已编辑,谢谢。出于这些原因,我通常会包含该值。我会添加一列来显示数据来自哪个源表,特别是当这将用于提供某种“合并”表时。@AaronBertrand已编辑,谢谢。出于这些原因,我通常会包含该值。