mysql - INSERT INTO SELECT 如何返回一组插入 ID

标签 mysql

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

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

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

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

最佳答案

您可以在临时表中选择您的数据,然后在插入行时运行游标,您将拥有 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 

关于mysql - INSERT INTO SELECT 如何返回一组插入 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883492/

相关文章:

mysql - 查询我在 MySQL 中的表数

php - 只显示月份和日期

Java/GWT/MySQL : connection refused?

php - 使用 MySQL 查询进行半复杂的数学运算

python - Django 数据库事务和死锁

php - Laravel/PDO 中的绑定(bind)列

php - 使用PHP和MySQLi对之前和之后的WHERE子句日期进行数据排序

mysql查询使用了错误的索引

mysql - 仅获取 MYSQL 的最新时间戳条目

php - 有什么方法可以在 PHP 中保持与 mysql 数据库的连接?