INSERT INTO SELECT如何返回插入ID集

时间:2012-08-09 12:29:45

标签: mysql

我有一个工作INSERT INTO SELECT查询,它根据select的结果将记录插入到新表中。简单。

INSERT INTO my_table (a, b, c)
SELECT a, b, c FROM my_table 
WHERE x=y;

如何从此查询的INSERT部分获取新创建的主键ID,以便我可以使用它们来更新另一个表? (主键是唯一的唯一引用)

我已经读过INSERT INTO SELECT只支持每个查询插入一个表,所以这是不可能的。如何实现(使用MyISAM引擎)?

1 个答案:

答案 0 :(得分:0)

你可以在临时表中选择你的数据,然后在插入行时运行游标,你会有PK

     DECLARE @tempTable TABLE(
    a VARCHAR(MAX),
    b VARCHAR(MAX),
    c VARCHAR(MAX)
    )

    INSERT INTO @tempTable(a,b,c)
    SELECT a,b,c FROM my_table WHERE x=y

DECALRE @a DATATYPE;
Declare @b DATATYPE;
Declare @c DATATYPE;

DECLARE cursor CURSOR FOR
    SELECT * FROM @tempTable

OPEN cursor 

FETCH NEXT FROM PropertyCursor INTO @a, @b,@c
WHILE (@@FETCH_STATUS = 0)
BEGIN
 INSERT INTO my_table(a,b,c)
VALUES(@a,@b,@c)
DECALRE @PrimaryKey INT = SCOPE_IDENTITY();//THis line will give u the PK so u can work with it and then below move to next row
FETCH NEXT FROM cursor INTO @a, @b,@c
END

CLOSE cursor 
DEALLOCATE cursor