2

例如,我有这个示例数据:

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 行),这没问题。

有任何想法吗?

4

1 回答 1

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 示例

您将在上面看到我给您的选择,您将获得要删除的 ID。

于 2012-11-22T15:09:25.547 回答