gpt4 book ai didi

sql - 如何使用 SQL 复制行并获取新旧 ID 作为结果?

转载 作者:行者123 更新时间:2023-12-02 18:56:34 24 4
gpt4 key购买 nike

我有一个表,我需要在其中复制某些行。我可以像这样获取新行的 ID:

DECLARE @IDs TABLE (ID int)
INSERT T (name, address)
OUTPUT INSERTED.TID INTO @ids
SELECT name, address
FROM T

但是我想要的是这样的:

DECLARE @IDs TABLE (oldID int, newID int)
INSERT T (name, address)
OUTPUT T.ID, INSERTED.TID INTO @ids
SELECT name, address
FROM T

这可以通过 SQL Server 完成吗?

附注我不是以编程方式执行此操作,因为它必须通过存储过程来完成。

最佳答案

带有来自 Andriy M 的有用链接链接到“How to copy tables avoiding cursors in SQL?” ',我设法想出了这个非常优雅的解决方案:

DECLARE @t TABLE (oID int, nID int);

MERGE T s
USING (
SELECT TID, name, address
FROM T [s]
) d on 0 = 1
WHEN NOT MATCHED
THEN INSERT (name, address)
VALUES (name, address)
OUTPUT d.TID as oID, Inserted.TID as nID
INTO @t;

关于sql - 如何使用 SQL 复制行并获取新旧 ID 作为结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com