MySQL:更新具有';其中';具有最大值的子句

MySQL:更新具有';其中';具有最大值的子句,mysql,Mysql,我想更新最后生成的行(max(id)行) 我试过这个代码,但不起作用 update person t1 set t1.age = 25 where t1.id = (select max(t2.id) from person t2 where t2.address = 'LA, California'); MySQL告诉我:错误代码:1093。不能在FROM子句中为更新指定目标表“t1” 因此,我认为在执行诸如更新之类的操作时,我无法达到相同的目的 我怎样才能解决这个

我想更新最后生成的行(
max(id)
行)

我试过这个代码,但不起作用

update person t1
set t1.age = 25
where t1.id = (select max(t2.id)  from person t2
            where t2.address = 'LA, California');
MySQL告诉我:
错误代码:1093。不能在FROM子句中为更新指定目标表“t1”

因此,我认为在执行诸如更新之类的操作时,我无法达到相同的目的

我怎样才能解决这个问题


关于。

您不能在子查询中引用同一个表,但可以在联接中引用(在
UPDATE
DELETE
语句中允许这样做):

另一种方法是使用
ORDER by
/
LIMIT
技术:

UPDATE   person
SET      age = 25
WHERE    address = 'LA, California'
ORDER BY id DESC
LIMIT    1

不能在子查询中引用同一个表,但可以在联接中引用(在
UPDATE
DELETE
语句中允许这样做):

另一种方法是使用
ORDER by
/
LIMIT
技术:

UPDATE   person
SET      age = 25
WHERE    address = 'LA, California'
ORDER BY id DESC
LIMIT    1
您可以尝试以下方式:

UPDATE person t1
    INNER JOIN (SELECT MAX(id) AS id  FROM person
            WHERE t2.address = 'LA, California') t2
        ON t1.id = t2.id
SET t1.age = 25;

您可以尝试以下方式:

UPDATE person t1
    INNER JOIN (SELECT MAX(id) AS id  FROM person
            WHERE t2.address = 'LA, California') t2
        ON t1.id = t2.id
SET t1.age = 25;


你推荐的limit 1方法简化了我的查询。非常好的主意。你推荐的limit 1方法简化了我的查询。非常好的主意。