You can't specify target table 'test' for update in FROM clause.

You can't specify target table 'test' for update in FROM clause.mysql

MySQL中You can't specify target table <test> for update in FROM clause錯誤的意思是說,不能先select出同一表中的某些值,再update這個表(在同一語句中)。 例以下面這個sql:sql

update test set `status`=3 where id in(select * from test where status=-50);oracle

 

改寫成下面就好了:.net

update test set `status`=3 where id in(select a.id from (select * from test where status=-50) a);ci

也就是說將select出的結果再經過中間表select一遍,這樣就規避了錯誤。注意,這個問題只出現於mysql,mssql和Oracle不會出現此問題。get

相關文章
相關標籤/搜索