多字段
只保留最小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);
网友评论