数据库MySQL报错 You can’t specify target table for update in FROM clause

问题:

  MySQL中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。eg:

delete from tbl where id in 
(
        select max(id) from tbl a where EXISTS
        (
            select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
        )
        group by tac
)

解决:

  将select出的结果再通过中间表select一遍。

delete from tbl where id in 
(
    select a.id from 
    (
        select max(id) id from tbl a where EXISTS
        (
            select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
        )
        group by tac
    ) a
)

 

posted @ 2018-07-25 10:17  樱花落&浅暮雪  阅读(270)  评论(0编辑  收藏  举报