首页 > 数据库 > mysql教程 > 如何在 SQL 中检索每个唯一'名称”的最大'总计”值?

如何在 SQL 中检索每个唯一'名称”的最大'总计”值?

Susan Sarandon
发布: 2025-01-07 21:20:41
原创
471 人浏览过

How to Retrieve the Maximum

SQL技巧:按组提取最大值

在数据库查询中,经常需要针对表中每个不同的分组提取最大值。本文将解决如何在一个表中,为每个唯一的“Name”选择具有最高“Total”值的记录的问题。

示例表和数据:

假设我们有以下示例表:

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

查询目标:

我们的目标是提取以下结果:

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

解决方案:

可以使用以下SQL查询实现此目标:

<code class="language-sql">SELECT
  Name, Top, Total
FROM
  sometable
WHERE
  Total = (SELECT MAX(Total) FROM sometable i WHERE i.Name = sometable.Name);</code>
登录后复制

解释:

此查询在WHERE子句中使用了子查询。子查询根据“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”最大值来从表中提取所需的记录。这些查询可以适应各种数据库管理系统,并为从分组数据中提取最大值提供通用的方法。

以上是如何在 SQL 中检索每个唯一'名称”的最大'总计”值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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