MySQL删除一列中的重复项,根据第二列保留最小和最大值

时间:2013-08-22 22:30:04

标签: mysql sql duplicates duplicate-removal

我有一个包含两列的表:

count | when
101   | 10:11
101   | 10:12
102   | 10:13
102   | 10:14
102   | 10:15
102   | 10:16
103   | 10:17
105   | 10:18
105   | 10:19
105   | 10:20

我需要删除所有重复的count条目,但保留两行,其中when值最小且最大:

count | when
101   | 10:11
101   | 10:12
102   | 10:13 _ removed 2 rows
102   | 10:16
103   | 10:17
105   | 10:18 _ removed 1 row
105   | 10:20

这是为了最小化表格大小,主要用于统计目的,因此具有相同Y轴值的点是无关紧要的。

1 个答案:

答案 0 :(得分:1)

MySQL支持join命令的delete语法。

使用此语法,您可以为要删除的相应记录设置过滤器:

delete t
    from yourtable t join
         (select count, min(when) as minwhen, max(when() as maxwhen
          from yourtable
          group by count
         ) tokeep
         on t.count = tokeep.count and (t.when > tokeep.minwhen and t.when < tokeep.maxwhen);