使用SQL Server 2008 R2
显然可以做到
INSERT INTO Table1 SELECT * FROM Table1 where Id=1234
请参阅:W3Schools
但在SQL Server中,这不起作用。我是否认为SQL Server不支持上述INSERT语句,并且需要专门指定列。
感谢。
修改
上面的SQL不完整,现已更正
答案 0 :(得分:5)
您错过了要插入的表格的名称
insert into destination_table
select * from source_table
当然这仅适用于具有相同列的表。如果您只想插入特定列,则还需要指定它们
insert into destination_table (col1, col2)
select col7, col3 from source_table
答案 1 :(得分:3)
如果您只是尝试从具有主键(IDENTITY列)的表中复制行,则无法使用以下语法:
INSERT INTO Table1 SELECT * FROM Table1 where Id=1234
这会违反唯一的主键值,因为它会尝试插入重复的IDENTITY。
相反,选择除IDENTITY之外的所有列,假设使用此架构:
Table1
------
ID
Col1
Col2
Col3
你会这样做,IDENTITY会自动为你增加:
INSERT INTO Table1 (Col1, Col2, Col3)
SELECT Col1, Col2, Col3
FROM Table1
WHERE Id=1234