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这个表。 


UPDATE t_tbc SET view_num = view_num - 1000 WHERE id IN ( SELECT id FROM t_tbc WHERE view_num > 1000 ) ;

就报错了: You can't specify target table 't_tbc ' for update in FROM clause



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


UPDATE t_tbc SET view_num = view_num - 1000 WHERE id IN ( SELECT id FROM (SELECT id FROM t_tbc WHERE view_num > 1000) a ) ;


这个问题只出现于MySQL,MSSQL和Oracle不会出现此问题。





mysql mysql报错

2020.11.18 00:32

https://www.meihaocloud.com.com/253.html , 欢迎转载,请在文章页标出原文连接 !


Copyright © 2020 千夕网 联系站长

粤公网安备 44030302001408号 粤ICP备19099833号-1