假设我在 MySQL 中执行 INSERT/ON DUPLICATE KEY UPDATE,它更新了一堆行。并且该表有一个自增主键。
有什么简单的方法可以让 MySQL 告诉我它刚刚更新的行的 ID?
我知道我可以执行另一个 SELECT 查询来查找与 INSERT 语句使用的约束相同的约束,这并不难写,但如果 MySQL 能够跟踪我。
我在手册中看到了有关 LAST_INSERT_ID 的技巧,适用于只有一个插入/更新行的情况,但我想知道您要更新多行的情况。
最佳答案
检查此链接一次
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
它说
If a table contains an AUTO_INCREMENT column and INSERT ... UPDATE inserts a row, the LAST_INSERT_ID() function returns the AUTO_INCREMENT value. If the statement updates a row instead, LAST_INSERT_ID() is not meaningful. However, you can work around this by using LAST_INSERT_ID(expr). Suppose that id is the AUTO_INCREMENT column.
要使 LAST_INSERT_ID()
对更新有意义,请按如下方式插入行:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
关于mysql - 我可以获得所有更新行的 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6630191/