首页 > 数据库 > mysql教程 > 如何在SQL中查找每个组的最大记录?

如何在SQL中查找每个组的最大记录?

Mary-Kate Olsen
发布: 2025-01-07 21:47:41
原创
219 人浏览过

How to Find the Maximum Record for Each Group in SQL?

SQL中按组查找最大记录

在数据库管理中,经常需要检索每个数据组中的最大记录。考虑以下场景。

问题:

您有一个包含三个字段的表:“Name”、“Top”和“Total”,数据如下:

Name Top Total
cat 1 10
dog 2 7
cat 3 20
horse 4 4
cat 5 10
dog 6 9

您的任务是查找每个唯一“Name”值中“Total”值最大的记录。期望的结果应该是:

Name Top Total
cat 3 20
horse 4 4
dog 6 9

解决方案:

要检索每个组的最大记录,可以使用以下查询:

<code class="language-sql">select
  Name, Top, Total
from
  sometable
where
  Total = (select max(Total) from sometable i where i.Name = sometable.Name)</code>
登录后复制

此查询将每条记录的“Total”值与其在同一“Name”组中的最大“Total”值进行比较。然后选择“Total”值匹配的记录。

或者,您可以使用子查询来实现相同的结果:

<code class="language-sql">select
  Name, Top, Total
from
  sometable
  inner join (
    select max(Total) as Total, Name
    from sometable
    group by Name
  ) as max on max.Name = sometable.Name and max.Total = sometable.Total</code>
登录后复制

此查询首先使用子查询计算每个唯一“Name”的最大“Total”值。然后,主查询将表与子查询连接,以仅选择具有匹配最大“Total”值的记录。

以上是如何在SQL中查找每个组的最大记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

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