首页 > 数据库 > mysql教程 > 如何在 MySQL 中查找具有最大列值并被另一列分区的行?

如何在 MySQL 中查找具有最大列值并被另一列分区的行?

Susan Sarandon
发布: 2025-01-25 06:46:08
原创
430 人浏览过

How to Find Rows with Maximum Column Values, Partitioned by Another Column in MySQL?

MySQL按另一列分组查找具有最大列值的行

在数据库中,按另一列分组查找具有最大值的行是一项常见的分析任务。在MySQL中,这可以通过组合聚合和过滤来实现。

本文探讨了从表中检索行的问题,这些行包含由另一列定义的每个组中特定列的最大值。例如,在提供的“TopTen”表中,任务是为每个唯一的“home”值提取行,以及相应的“datetime”列的最大值。

最初尝试的查询如下,但存在缺陷:

<code class="language-sql">SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM TopTen s1
JOIN (SELECT
  id,
  MAX(`datetime`) AS dt
FROM TopTen
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY `datetime`</code>
登录后复制

该查询未能正确识别每个“home”的最大“datetime”值。 为了正确解决问题,需要在子查询中同时对“home”和“datetime”进行分组:

<code class="language-sql">SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime</code>
登录后复制

此最终查询成功地识别了每个不同“home”值的行,这些行包含其“datetime”列的最大值,从而得到预期的结果:

id home datetime player resource
1 10 04/03/2009 john 399
2 11 04/03/2009 juliet 244
5 12 04/03/2009 borat 555
8 13 01/01/2009 borat 700

以上是如何在 MySQL 中查找具有最大列值并被另一列分区的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板