原文地址:https://www.cnblogs.com/luohoufu/archive/2008/06/05/1214286.html
在项目开发过程中有个模块日清表页面数据重复,当时那个页面的数据是查询n多个表,晚上跑的定时任务执行昨天的sql语句,为了方便修改用的存储跑的。
数据重复了,在测试服务器上没有类似的情况发生。
并且不能删除掉数据。
紧急情况下,先将源头查询查询数据过滤掉,将原有表结构复制一份修改成copy表,然后将历史数据根据时间段一点一点查询出来,然后将两个文件名称调换。
可是重复数据如何删除呢:
SELECT * FROM today_order t INNER JOIN ( SELECT tt.platform_number,tt.payment_bh, MAX (tt.id) AS id FROM today_order tt GROUP BY tt.platform_number,tt.payment_bh ) a ON t.platform_number = a.platform_number AND t.payment_bh=a.payment_bh AND t.id <> a.id
DELETE t FROM today_order t INNER JOIN ( SELECT tt.platform_number,tt.payment_bh, MAX (tt.id) AS id FROM today_order tt GROUP BY tt.platform_number,tt.payment_bh ) a ON t.platform_number = a.platform_number AND t.payment_bh=a.payment_bh AND t.id <> a.id