mysql - 更新期间对每个最后插入 ID 执行

标签 mysql

我有一个非常简单的过程,可以对多行​​执行更新。这是我可以循环遍历每个更新行的插入 id 的方法吗?

BEGIN
UPDATE testTable set testValue = 2 
where username = inputUser and flag = 1;

//for each update performed, insert LAST_INSERT_ID() into tableB
END

这可能吗?如果是这样,你能引导我走向正确的方向吗?

最佳答案

LAST_INSERT_ID 只为您提供最后一个 ID。您可以在没有循环的情况下进行多次插入。您可以使用 SELECT 查询的输出并将其插入到所需的表中。你可以这样做:

BEGIN
    UPDATE testTable set testValue = 2 
    where username = inputUser and flag = 1;

    INSERT into tableB (column1, column2)
    SELECT column1, column2 FROM testTable
    WHERE username = inputUser and flag = 1;
END

例如:

User (username, password)
UserLoginLog (username, last_log_in_date)

INSERT INTO UserLogInLog (username, last_log_in_date)
SELECT username, NOW() 
FROM User 
WHERE username = "JohnDoe"

关于mysql - 更新期间对每个最后插入 ID 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35708846/

相关文章:

MySQL 在未知数量的日期间隔之间进行选择

MySQL查询超过3个表

php - Json在php中使用2个foreach获取内容来检索多个节点深度

php - 使用 PHP 从动态表中计数

mysql - 如何在非阻塞环境中修复此 MySQL/Innodb 死锁问题?

mysql - ON子句的两个位置: Which is faster?

mysql - 如何解决 XAMPP 1.7.7 - PHPMyAdmin - Ubuntu 中的 MySQL 错误 #2002

mysql - 基于在数据库中搜索整数或长字符串(唯一)的性能?

php - 无法将数据库下载为 CSV

mysql - 其他表mysql中 child 的总价