复制多个行及其';在SQL中删除相关行

复制多个行及其';在SQL中删除相关行,sql,tsql,Sql,Tsql,有人知道复制多个表行及其相关项的简单方法吗 在我的简化示例中,我有两个表,一个是公司表,另一个是员工表,我希望能够以一种简单的方式克隆整个公司及其所有员工 [Companies] - ID (Auto-increment) - Name [Employees] - ID - CompanyID (Foreign Key) - Name 我一直在使用OUTPUT-子句,但只是设法返回插入的ID,而不引用原始行 我就是不知道如何将插入的行链接到原始行? 如果insert语句返回如下表: @m

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

在我的简化示例中,我有两个表,一个是公司表,另一个是员工表,我希望能够以一种简单的方式克隆整个公司及其所有员工

[Companies]

- ID (Auto-increment)
- Name

[Employees]

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

我就是不知道如何将插入的行链接到原始行?

如果insert语句返回如下表:

@mappingTable

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

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

还是我走错了路?有没有更好的方法来实现这一点?

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


看看这个问题:

您可以使用
merge
station的output子句在旧ID和新的自动递增ID之间映射


看看这个问题:

如果您使用的是SQL Server 2008,那么可以将output子句与
merge
一起使用。正是我想要的。非常感谢。如果您使用的是SQL Server 2008,则可以将output子句与
merge
一起使用。正是我想要的。非常感谢。回答这个问题,我会将其标记为已接受:)