2013-05-14 33 views
1

我有以下聲明:SQL:檢索插入的行ID陣列/表

INSERT INTO table1 (field1, FIELD2) 
SELECT f1, f2 FROM table2 -- returns 20 rows 

插入後,我需要知道在table1.ID生成的ID是INT IDENTITY

的陣列/表thanx提前。

回答

3

使用OUTPUT條款(SQL2005及以上):

DECLARE @IDs TABLE(ID int) 

INSERT INTO table1(Field1, Field2) 
OUTPUT inserted.ID into @IDs(ID) 
SELECT Field1, Field2 FROM table2 

如果你想知道哪些產生從表2的行其ID在表1 (並且Field1和Field2不足以識別),則需要使用MERGE

DECLARE @IDs TABLE(Table1ID int, Table2ID int) 

MERGE table1 AS T 
USING table2 AS S 
ON 1=0 
WHEN NOT MATCHED THEN 
    INSERT (Field1, Field2) VALUES(S.Field1, S.Field2) 
OUTPUT inserted.ID, S.ID INTO @IDs(Table1ID, Table2ID)