MySQL:在更新查询中使用选择

时间:2019-05-24 11:10:56

标签: mysql sql

我有一个查询:

update movies
    SET name = 'example'
    where id = (select MAX(id) from movies);

我需要更新最后一条记录。

当前我收到错误:

  

。#1093-您无法在FROM子句中指定目标表'电影'

2 个答案:

答案 0 :(得分:3)

在MySQL中,您可以使用order bylimit

update movies
    set name = 'example'
    order by id desc
    limit 1;

MySQL在updatedelete查询中有一个限制,即不允许在setwhere子句中的子查询中引用该表。 / p>

您也可以使用join表达这一点:

update movies m join
       (select max(m2.id) from movies m2) m2
       on m2.max_id = m.id
    set m.name = 'example';

但是我发现order bylimit更加清晰。

答案 1 :(得分:0)

您可以嵌套查询:

select MAX(id) id from movies

在另一个select内:

update movies
SET name = 'example'
where id = (select t.id from (select MAX(id) id from movies) t);