获取多次插入后插入和选定行的 ID



我有一个循环中运行的查询,我正试图将其优化为这个

INSERT INTO myTable (col1, col2, col3)
OUTPUT inserted.id, SOURCE_ROW_ID_NEEDED_HERE
SELECT col1, col2, col3 
FROM myTable 
WHERE col2 = 20 --any value

我的问题是:col2=20可以插入N行,我需要新记录的源行id。例如,假设col2=20有3行,其中id为11,12,15。新插入的ID是150151152。

我需要

11  150
12  151
15  152

你在寻找类似的东西吗

CREATE TABLE T1(
Col1 INT IDENTITY(1, 1),
Col2 INT,
Col3 INT
);
CREATE TABLE T2(
Col1 INT IDENTITY(1, 1),
Col2 INT,
Col3 INT
);
INSERT INTO T2(Col2, Col3) VALUES
(11,  150),
(12,  151),
(15,  152);
DECLARE @TT TABLE (ID INT, Col2 INT);
SET IDENTITY_INSERT T1 ON;
INSERT INTO T1 (Col1, Col2, Col3)
OUTPUT INSERTED.Col1,
INSERTED.Col2
INTO @TT (ID, Col2)
SELECT Col1,
Col2,
Col3
FROM T2;
SELECT *
FROM @TT;
SET IDENTITY_INSERT T1 OFF;

演示

最新更新