删除重复数据

2016-01-06  本文已影响14人  果酱一一

多字段

只保留最小row_id记录

delete from t_driver_problem 
where (driver_id,quality_sub_id,create_time) 
in (select  driver_id,quality_sub_id,create_time  from t_driver_problem group by driver_id,quality_sub_id,create_time having count(*)>1) 
and id not in (select  min(id) from t_driver_problem group by driver_id,quality_sub_id,create_time having count(*)>1);

参考文献:
http://blog.csdn.net/softwave/article/details/3890576

会遇到如下问题

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

解决方案如下

delete FROM t_driver_problem  
WHERE (driver_id,quality_sub_id,create_time )  
IN (SELECT a.driver_id,a.quality_sub_id,a.create_time  FROM ( SELECT driver_id,quality_sub_id,create_time FROM t_driver_problem GROUP BY driver_id,quality_sub_id,create_time   HAVING COUNT(*)>1) AS a) 
AND id NOT IN (SELECT b.id FROM (SELECT  MIN(id) AS id FROM t_driver_problem GROUP BY driver_id,quality_sub_id,create_time HAVING COUNT(*)>1) AS b);
上一篇 下一篇

猜你喜欢

热点阅读