SQL分组查询最大值
本问题旨在从表中提取特定数据,目标是为每个唯一的“Name”字段找到具有最高“Total”值的记录。 这与查找每个组的最后一条记录的问题有所不同。
以下是两种实现该目标的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>
此查询使用子查询来查找每个Name
组中的最大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>
此查询使用INNER JOIN
将sometable
与一个子查询连接,该子查询为每个Name
组计算最大Total
值。 INNER JOIN
条件确保只选择Total
值与每个组的最大值匹配的记录。
两种方法都能得到相同的结果:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
以上是如何在 SQL 中查找每个名称组的最大总数?的详细内容。更多信息请关注PHP中文网其他相关文章!