我可以从表中选择一组行并直接将其插入表或SQL中的同一个表中吗?

我可以从表中选择一组行并直接将其插入表或SQL中的同一个表中吗?,sql,sql-server,sql-server-2008,insert,Sql,Sql Server,Sql Server 2008,Insert,嗨,我只是好奇我能不能做点像- insert into Employee ( Select * from Employee where EmployeeId=1) 我只是觉得有必要这样做很多次…所以我只是好奇是否有任何方法可以实现它。您可以这样做,但如果您想更改列值,您不能选择*: Insert into employee ( employeeId, someColumn, someOtherColumn ) Select 2, someColumn, someOtherColumn

嗨,我只是好奇我能不能做点像-

insert into Employee ( Select * from Employee where EmployeeId=1)

我只是觉得有必要这样做很多次…所以我只是好奇是否有任何方法可以实现它。

您可以这样做,但如果您想更改列值,您不能
选择*

Insert into employee ( employeeId, someColumn, someOtherColumn )
  Select 2, someColumn, someOtherColumn
  From employee
  Where employeeId=1

这将插入
2
作为新的
employeeId

是列出列并按此操作

insert into Employee (EmployeeId, LastName, FirstName......)
Select 600 as EmployeeId, LastName, FirstName......
from Employee where EmployeeId=1
但是,如果EmployeeId是一个标识列,那么您还需要执行以下操作

set identity_insert employee on 
先是

set identity_insert employee off 

完成后

可以使用
插入到。。。如果目标表已经存在,并且您只想向其追加行,请选择…
syntax。只需执行
SELECT
部分,就可以轻松检查您是否正在选择数据

Insert into existingTable ( Column1, Column2, Column3, ... )
Select 1, Column2, Column3
From tableName
Where ....
您不局限于一个简单的select,
select
语句可以根据需要进行复杂化。此外,您不需要为所选列提供名称,因为它们将由目标表提供。 但是,如果dest表上有自动增量列,则可以从
插入的列列表中忽略它们,也可以使用“”配置

如果要从现有数据创建新表,则应使用
SELECT。。。转换为…
语法

Select 1 as Column1, Column2, Column3
Into newTable
From tableName
Where ....
同样,select可以是任意复杂的,但是,因为列名取自select语句,所以所有列都必须具有显式名称。如果“newTable”表已存在,则此语法将给出一个错误。如果你想快速复制一张表格来尝试一些东西,这个表格非常方便