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

时间:2018-11-26 18:33:17

标签: sql sql-server tsql

我有一个循环运行的查询,我正在尝试以此进行优化

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。例如,说col3 = 20的行有3行,其中id为11,12,15。新插入的ID为150,151,152。

我需要

11  150
12  151
15  152

1 个答案:

答案 0 :(得分:0)

您是否正在寻找类似的东西

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;

Demo