我有两个具有相同列的表,我需要将一个表的行复制到另一个表的行,以创建一个包含两个表中所有值的大表。现在我正在执行此查询以返回相同的内容:
SELECT col1, col2, col3 from Table1
union
SELECT col1, col2, col3 from Table2
然而,它似乎非常低效,而且我的系统非常慢(返回1210189条记录)。
答案 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
运作良好。准则,两个表的列名都完全相同:)