mysql – 我可以获取所有更新行的ID吗?

假设我在
MySQL中执行INSERT / ON DUPLICATE KEY UPDATE,它会更新一堆行.并且该表具有自动增量主键.

有没有简单的方法让MySQL告诉我刚刚更新的行的ID?

我知道我可以做另一个SELECT查询,查找INSERT语句使用的相同约束,并且这并不难写,但是如果MySQL可以跟踪我的ID,它似乎更有效.

我在手册中看到了关于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;
点赞