如何在MySQL中获取上次更新行的ID?

2022-08-30 06:45:22

如何使用PHP获取MySQL中上次更新行的ID?


答案 1

我已经找到了这个问题的答案:)

SET @update_id := 0;
UPDATE some_table SET column_name = 'value', id = (SELECT @update_id := id)
WHERE some_other_column = 'blah' LIMIT 1; 
SELECT @update_id;

编辑者 aefxx

可以进一步扩展此技术以检索受 update 语句影响的每一行的 ID:

SET @uids := null;
UPDATE footable
   SET foo = 'bar'
 WHERE fooid > 5
   AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;

这将返回一个字符串,其中包含所有 ID 由逗号连接。


答案 2

嗯,我很惊讶,在答案中,我没有看到最简单的解决方案。

假设, 是表中的整数标识列,并且您使用以下语句更新行:item_iditems

UPDATE items
SET qwe = 'qwe'
WHERE asd = 'asd';

然后,要了解语句之后的最新受影响的行,应将语句略微更新为以下内容:

UPDATE items
SET qwe = 'qwe',
    item_id=LAST_INSERT_ID(item_id)
WHERE asd = 'asd';
SELECT LAST_INSERT_ID();

如果只需要更新真正更改的行,则需要通过LAST_INSERT_ID检查行中的数据是否要更改,从而添加item_id的条件更新。


推荐