将数据复制到另一个表


154

如何在SQL Server中使用相同的架构将数据从一个表复制/追加到另一个表中?

编辑:

假设有一个查询

select * 
into table1 
from table2 
where 1=1 

所创建table1的架构和数据与中相同table2

是否有类似这样的简短查询,仅将整个数据仅复制到一个已经存在的表中?


仅提供完整信息,请小心此命令不要复制表的索引和触发器!请参见下面的帖子进行复制索引和触发器脚本:stackoverflow.com/questions/7582852/...
HausO

如何解决呢?INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Answers:


310

如果两个表都是真正相同的架构:

INSERT INTO newTable
SELECT * FROM oldTable

否则,您将必须指定列名称(newTable如果您要为所有列指定值并以与newTableSchema 相同的顺序选择列,则的列列表是可选的):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable

1
如果我想输入blank data某些列怎么办?
2015年

3
@coder只是一个select子句,因此欢迎您在其中添加所需的任何内容,包括显式NULLs,字符串常量,表达式甚至子查询。
lc。

为什么这不起作用INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum因为您的标量查询选择了多个列。见stackoverflow.com/questions/4141370/...stackoverflow.com/questions/6254913/...
LC。

1
如果两个表都显示相似的架构,但是在YES上有一列带有“ Identity Specification”的列,则SQL语句需要枚举所有列,但带有Identity Specification的列除外。
加布里埃尔·马里乌斯·波佩斯库

18

这是执行此操作的正确方法:

INSERT INTO destinationTable
SELECT * FROM sourceTable


11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        

9

试试这个:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2


4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

相同的列名不是必须的。


3

插入带有条件的选定列

INSERT INTO where_to_insert (col_1,col_2) SELECT col1, col2 FROM from_table WHERE condition;

将所有数据从一个表复制到另一个具有相同列名的数据。

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

第一个查询将创建从table1到的结构table2,第二个查询将将数据从table1table2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.