mysql You can’t specify target table for update in FROM clause解决方法详解数据库

mysql You can’t specify target table for update in FROM clause解决方法
出现这个错误的原因是不能在同一个sql语句中,先select同一个表的某些值,然后再update这个表。


mysql> update message set content='Hello World' where id in(select min(id) from message group by uid);
ERROR 1093 (HY000): You can't specify target table 'message' for update in FROM clause

因为在同一个sql语句中,先select出message表中每个用户消息的最小id值,然后再更新message表,因此会出现 ERROR 1093 (HY000): You can’t specify target table ‘message’ for update in FROM clause 这个错误。

解决方法:select的结果再通过一个中间表select多一次,就可以避免这个错误


update message set content='Hello World' where id in( select min_id from ( select min(id) as min_id from message group by uid) as a );

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/4051.html

(0)
上一篇 2021年7月16日 18:28
下一篇 2021年7月16日 18:28

相关推荐

发表回复

登录后才能评论