【mysql 】sql刪除重復記錄 You can't specify target table '表名' for update in FROM clause


用下面的語句就報語法出錯:

delete from tab_record where recordid not in
(select  min(c.recordid) as recordid from  tab_record  c group by (c.dev_Id+c.StartTime+c.EndTime+c.CardNum));

 報錯如下:You can't specify target table '表名' for update in FROM clause

找到替代方案,改用下面的,OK:

delete from tab_record where recordid not in
(select min(c.recordid) as recordid from (select * from tab_record ) c group by (c.dev_Id+c.StartTime+c.EndTime+c.CardNum));

或者下面的也OK:

delete from tab_record where recordid not in
(select * from (
  select min(recordid) as recordid from tab_record group by (dev_Id+StartTime+EndTime+CardNum)) v);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM