【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