📜  如何获取 MySQL 中最后更新行的 ID?

📅  最后修改于: 2022-05-13 01:56:46.205000             🧑  作者: Mango

如何获取 MySQL 中最后更新行的 ID?

很多时候,我们需要根据最后更新的表 id 更新数据。

我们应该编写一个更新查询,以便我们可以在更新语句本身中获取最后更新的 ID
下面提到的代码是在广义上创建的,只需替换中的值即可轻松使用,如下所示:

创建表

CREATE TABLE 
tbl(Rno INTEGER AUTO_INCREMENT ,
      Name VARCHAR(50) ,
       CONSTRAINT tbl_Rno PRIMARY KEY(Rno));
INSERT INTO tbl (Name) VALUES ('value1');
INSERT INTO tbl (Name) VALUES ('value2');
INSERT INTO tbl (Name) VALUES ('value3');

获取最后更新的 ID
这里的逻辑建议我们首先将最后更新的 ID 更新为 0,因为它会清除之前执行的任何函数,然后我们使用 SQL 中的 where 子句/查询更新我们的值,并使用 @lastupdatedID 查询选择最后更新的 ID

SET @LastUpdateID := 0;
UPDATE tbl SET Name = 'value_new',Rno = (SELECT @LastUpdateID := Rno) 
   WHERE Name = 'value3';
SELECT @LastUpdateID AS LastUpdateID;

获取多个最后更新的 ID
这里的逻辑建议我们使用 SQL 中的 where 子句/查询来更新我们的值,并使用 @lastupdatedID 查询选择最后更新的 ID,并选择多个 ID,我们使用 Concat 查询,因为这段代码从底部开始搜索,你会如示例所示,按降序获得我们的答案。

SET @LastUpdateID = NULL;

UPDATE tbl SET Name = 'changed' WHERE Name 'changed'
AND (SELECT @LastUpdateID := CONCAT_WS(',', Rno, @LastUpdateID));
SELECT @LastUpdateID;

示例 #1(对于上次更新的 ID)

示例 #2(对于多个上次更新的 ID)