在SQL中复制多行及其相关行

时间:2011-08-29 09:08:59

标签: sql tsql

有没有人知道复制多个表行及其相关项的简单方法?

在我的简化示例中,我有两个表,一个用于公司表,一个用于员工,我希望能够以简单的方式与所有员工一起克隆整个公司。

[Companies]

- ID (Auto-increment)
- Name

[Employees]

- ID
- CompanyID (Foreign Key)
- Name

我一直在使用OUTPUT - 子句,但只是设法返回插入的ID而不引用原始行。

我无法弄清楚如何将插入的行与原始行相关联?

如果insert-statement返回了这样的表:

@mappingTable

-InsertedCompanyID
-OriginalCompanyID

我可以运行这样的声明来复制所有员工:

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

或者我走错了路?有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用merge语句的output子句在旧ID和新的自动增量ID之间进行映射。

看一下这个问题:Using merge..output to get mapping between source.id and target.id