首页 > 解决方案 > MySQL根据列中的最大值获取行

问题描述

我有一个 MySQL 数据库,它目前正在从 CSV 文件中附加新数据。除了几列(即last_status)之外,一些行是重复的。

我想通过仅捕获基于 MAX(last_status) 的最新记录来过滤掉整个数据库。

假设我有 4 行具有相似 ID:

ID, last_status,....(50 other columns)
100, 08/08/2020,...
100, 09/08/2020,...
200, 09/08/2020,...
200, 11/08/2020,...

我希望所有记录的结果都是这样的:

ID, last_status,...(50 other columns)
100, 09/08/2020,...
200, 11/08/2020,...

我试过这个:

    select *
from total_report s1
inner join
(
  select MAX(last_status) as last_status, ID
  from htotal_report
  group by ID
) s2
  on s1.ID = s2.ID
  and s1.last_status = s2.last_status

我需要这个的原因是在 Tableau 中可视化数据,现在它正在分别计算重复的 ID 行。我想根据可以在 Tableau 中使用的问题来创建一个视图来解决这个问题。

编辑:ID 是唯一的 ID,不是自动递增的 ID,也不是 PK 或 FK。

标签: mysqldatabasegreatest-n-per-group

解决方案


如果我理解正确,不仅内部部分会提供您需要的东西吗?

 select MAX(last_status) as last_status, ID
  from htotal_report
  group by ID

推荐阅读