2011-08-29 50 views
1

有誰知道複製多個錶行及其相關項目的簡單方法嗎?在SQL中複製多行及其相關的行

在我的簡單示例中,我有兩個表格,一個是公司的表格,一個是他們的員工的表格,我希望能夠以簡單的方式將所有員工都克隆到整個公司。

[Companies] 

- ID (Auto-increment) 
- Name 

[Employees] 

- ID 
- CompanyID (Foreign Key) 
- Name 

我一直在玩與周圍的OUTPUT -clause只是設法沒有原始行參考返回插入的ID。

我只是不知道如何鏈接插入的行到原來的?

如果插入語句返回一個像這樣的表:

@mappingTable 

-InsertedCompanyID 
-OriginalCompanyID 

我可以運行這樣的語句來複制所有員工:

INSERT INTO Employees (CompanyID, Name) 
SELECT m.InsertedCompanyID, x.Name FROM @mappingTable m 
INNER JOIN Employees x (x.CompanyID = m.OriginalCompanyID) 

還是我在錯誤的道路上?有沒有更好的方法來實現這一點?

+2

如果你是SQL Server 2008上,你可以使用輸出子句'merge'。 http://stackoverflow.com/questions/5365629/using-merge-output-to-get-mapping-between-source-id-and-target-id –

+0

正是我在找什麼。謝謝!讓它成爲答案,我會將其標記爲接受:) –

回答