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

标签 mysql sql duplicates

我有一个包含两列的表格:

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 轴值的点是不相关的。

最佳答案

MySQL 支持 delete 命令的 join 语法。

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

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);

关于MySQL 删除一列中的重复项,根据第二列保留最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391832/

相关文章:

PHP比较两个表的结果

mysql - 显示具有多个类别的值的一行

PHP - 使用foreach语句返回SQL表,仅返回第一列的值

php - 仅提取尚未插入链接表的值

mysql - MySQL 中的 OR 与 AND

c# - 使用 LINQ/C# 查询检测 "near duplicates"

MySql从两个表中选择全部导致大量重复

mysql - 需要帮助构建 mysql 查询

mysql - 如何通过单个查询 "all, except in list"实现?

python - Pandas 数据框 : duplicates based on column and time range