将两个表连接成一个大表

时间:2008-11-29 09:04:23

标签: sql database

我有两个具有相同列的表,我需要将一个表的行复制到另一个表的行,以创建一个包含两个表中所有值的大表。现在我正在执行此查询以返回相同的内容:

SELECT col1, col2, col3 from Table1
union
SELECT col1, col2, col3 from Table2

然而,它似乎非常低效,而且我的系统非常慢(返回1210189条记录)。

6 个答案:

答案 0 :(得分:11)

可以这样做:

SELECT col1, col2, col3 
INTO Table1
FROM Table2 

答案 1 :(得分:11)

从union all开始:

select col1, col2, col3 from Table1
union all
select col1, col2, col3 from Table2

您的查询正在尝试重复删除内容,这会大大减慢速度。

答案 2 :(得分:2)

您可以使用它来填充第二个表:

Insert into table2 select * from table1;

或者如果你想更具体:

Insert into table2(col1, col2, col3) select col1, col2, col3 from table1;

(注意:某些DBMS可能需要在SELECT子句周围加上括号。)

答案 3 :(得分:1)

我认为最好的选择是在sql server中创建一个视图,这样可以优化查询的性能:

SELECT col1, col2, col3 from Table1
union all
SELECT col1, col2, col3 from Table2

(正如其他用户所说:“union”用于从两个表中选择不同的值 其中“union all”用于选择所有值,包括 从表中重复。)

同时我会限制从数据库中获取的行数,如果我正在为Web编写它们,如果这给我带来了问题,那么使用Sql Server 2005 row_number()的新功能,这个我会分页结果。

答案 4 :(得分:0)

select * into new table(your new table name) 
from table1.col1,table1.col2,table2.col1;

此处列可以是您需要的列。

答案 5 :(得分:0)

select * into newtable from table1
union all
select * from table2

运作良好。准则,两个表的列名都完全相同:)