如何在MySQL中获取上次更新行的ID?
如何使用PHP获取MySQL中上次更新行的ID?
我已经找到了这个问题的答案:)
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 由逗号连接。
嗯,我很惊讶,在答案中,我没有看到最简单的解决方案。
假设, 是表中的整数标识列,并且您使用以下语句更新行:item_id
items
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的条件更新。