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/

相关文章:

c# - 如何获取列表中重复项的值和索引?

sql - 在 SQL Server 2008 中使用 select where 查找一列上的重复项

sql - postgres 可以*有条件地*检查限制重复项吗?

php - 在一次交易中。每次失败都需要回滚吗?或者退出脚本而不提交就足够了?

MySql 数据透视不压缩分组行

sql - 2 列上的 Postgresql 约束,因此 "col_a"不能共享 "col_b"的任何值

mySQL 触发器不触发

php - 根据另一个表信息更新表

php - 使用大型 mysql 数据库改进查询 UPDATE

mysql - 使用列值作为 IN MySql 的子句