大家好我只是好奇,如果我可以做類似 -我可以從表中選擇一組行嗎,並直接將其插入SQL表中或同一個表中?
insert into Employee (Select * from Employee where EmployeeId=1)
我只是覺得有必要做了很多次......所以只是很好奇,如果有任何的方式來實現這一目標。 。
大家好我只是好奇,如果我可以做類似 -我可以從表中選擇一組行嗎,並直接將其插入SQL表中或同一個表中?
insert into Employee (Select * from Employee where EmployeeId=1)
我只是覺得有必要做了很多次......所以只是很好奇,如果有任何的方式來實現這一目標。 。
你可以做這樣的事情,但你可以,如果你想不Select *
更改列值:
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
但是,如果僱員是標識列,那麼你也需要做
set identity_insert employee on
先
set identity_insert employee off
完成後
如果目標表已經存在,您可以使用INSERT INTO ... SELECT ...
語法,而您只需要向其追加行。很容易通過執行SELECT
部件來檢查您是否選擇了您的數據。
Insert into existingTable (Column1, Column2, Column3, ...)
Select 1, Column2, Column3
From tableName
Where ....
您不限於簡單選擇,SELECT
語句可以根據需要儘可能複雜。您也不需要爲選定的列提供名稱,因爲它們將由目標表提供。 但是,如果在dest表上有自動增量列,則可以從INSERT
的列列表中忽略它們或使用'set identity_insert'配置。
如果你想從現有數據的新表,那麼你應該使用SELECT ... INTO ...
語法
Select 1 as Column1, Column2, Column3
Into newTable
From tableName
Where ....
再次,選擇可以是任意複雜的,但是,因爲列名從選擇取聲明,所有列必須有明確的名稱。如果'newTable'表已經存在,這個語法將會出錯。如果你想快速複製一張表來嘗試一些東西,這個表單非常方便。