首页 > 解决方案 > 如何查询非重复行但保留主键

问题描述

由于刷新表单请求的用户错误,我在我的数据库中继承了多个重复行。这个概念是一个慈善活动的实时跟踪器,每小时更新一次距离。由于他们在输入新的距离后尝试刷新管理页面以返回它,因此它重新提交了无数次。

我试图将我的 SQL 查询更改为只提取DISTINCT行。这适用于单列但是,我需要用它来拉出total_distance主键。id

如果我尝试:

SELECT DISTINCT total_distance, id
FROM ptsd_cycle
ORDER BY total_distance DESC

我仍然得到重复的条目,因为 ID 导致它们是不同的。如何只查询不重复的行?

标签: mysqlsql

解决方案


尝试按照您所说的重复对距离进行分组,并获得最小的 id 行,这将为您提供具有该距离值的第一条记录。

SELECT MIN(id) AS id, total_distance 
FROM ptsd_cycle 
GROUP BY total_distance 
ORDER BY total_distance DESC

推荐阅读