2010-06-07 56 views

回答

7

你可以做這樣的事情,但你可以,如果你想不Select *更改列值:

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

這將插入2作爲新employeeId

3

是名單出列,那樣做

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 

完成後

3

如果目標表已經存在,您可以使用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'表已經存在,這個語法將會出錯。如果你想快速複製一張表來嘗試一些東西,這個表單非常方便。

相關問題