Sql server 删除重复记录的SQL语句

时间:2021-04-14 06:24:54

原文地址: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