基于两个不同的字段值删除重复记录

时间:2013-02-18 22:53:19

标签: duplicate-data duplicates

我已经阅读了大量帖子,但似乎找不到与我的重复记录情况类似的帖子。绝大多数重复的帖子都是为了简单地删除重复项以保留一条记录,或者根据MAX保留副本(例如,日期)或删除具有最新日期的重复项,并保留最新日期的记录。

我想根据字段值删除重复记录。例如,在下面的数据中,我需要删除每个ID的重复项,但保留记录状态为“取消”。对于ID'1',我需要保留的记录是显示状态的“取消”的第二条记录。

我试过

SELECT A.ID, A.CONTRACT, A.COMPANY, A.STATUS, A.DATE
FROM DATA1 A
INNER JOIN
 (SELECT ID, COUNT(ID) AS IDCOUNT
  FROM DATA1
  GROUP BY ID) B
ON A.ID = B.ID
DELETE FROM DATA1
WHERE STATUS = 'ISSUED'

我的桌子(DATA1)有110,661。当我运行此查询时,重复项仍然存在,记录计数从110,661变为114,272。

非常感谢任何帮助。

ID  Contract   Company   Status   Date
1      8        Apex     Issue    1/10/12
1      8        Apex     Cancel   1/10/12 
2      13       Costa    Issue    07/18/12
2      13       Costa    Cancel   07/18/12
3      50      Southern  Cancel   11/15/12
3      50      Southern  Issue    11/15/12
4      33      Fidelity  Issue    2/28/12
4      33      Fidelity  Cancel   2/28/12
5      68      United    Cancel   4/13/12
5      68      United    Issue    4/13/12

0 个答案:

没有答案