我有一个查询:
update movies
SET name = 'example'
where id = (select MAX(id) from movies);
我需要更新最后一条记录。
当前我收到错误:
。#1093-您无法在FROM子句中指定目标表'电影'
答案 0 :(得分:3)
在MySQL中,您可以使用order by
和limit
:
update movies
set name = 'example'
order by id desc
limit 1;
MySQL在update
和delete
查询中有一个限制,即不允许在set
或where
子句中的子查询中引用该表。 / 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 by
和limit
更加清晰。
答案 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);