我有一个表,我需要在其中复制某些行。我可以像这样获取新行的 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的链接到 '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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)