例如,我有这个样本数据:
DATE VALUE ID
2010-09-28 1 20000
2010-09-28 1 50000 X
2010-09-28 3 20001
2010-09-28 3 50001 X
2010-10-02 6 50002
2010-10-02 6 50003
我的问题是我有重复的数据,我只能通过自动递增的ID区分它们:副本有很大的差异;我想删除最新的条目,考虑到日期和价值与相应的前一个条目相比(用X标记)。如果行相等,如果它们没有先前的ID(如在最后2行中),则没有问题。
有什么想法吗?
答案 0 :(得分:0)
在你的表中,那些带有X的那些没有相同的价值......我认为这是一个错误。
无论如何,如果要在ID之间的差异(例如1)时删除重复项,则可以执行此操作。
编辑:我想我现在得到了你想要的东西。因此,您不会将具有连续ID的重复记录视为重复(这是我在开始时的想法),但您会考虑具有较大差异的重复记录。 因此,我们假设ID之间的最大差异,因此您不会将它们视为重复= X
Delete From Table where ID IN
(Select a.ID from Table a, Table b Where a.ID-b.ID > X
AND a.Date = b.Date and a.Value = b.Value)
在你的例子中,如果你用1或更大的代替X,它将完成你想要的工作。
SQL FIDDLE EXAMPLE OF THE SELECTION USED TO DELETE
您将在上面看到,根据我给您的选择,您将获得要删除的ID。