【问题标题】:MySQL get row based on max value in column [duplicate]MySQL根据列中的最大值获取行[重复]
【发布时间】:2020-12-08 20:10:47
【问题描述】:

我有一个 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。

【问题讨论】:

  • 我不太明白...实际上您尝试的查询就是您要查找的...为什么它不起作用?
  • @Gosfly 我可能做错了什么,但是当我在tableau(初始SQL)中执行SQL查询时,结果是一样的。
  • “都一样”是什么意思?

标签: mysql database greatest-n-per-group


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 2022-11-11
    • 2013-03-18
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2022-01-24
    相关资源
    最近更新 更多