首页 > 数据库 > mysql教程 > 如何在SQL中根据相关列的最大值高效检索值?

如何在SQL中根据相关列的最大值高效检索值?

Susan Sarandon
发布: 2025-01-17 19:07:10
原创
263 人浏览过

How Can I Efficiently Retrieve Values Based on the Maximum of a Related Column in SQL?

基于相关列最大值高效获取数据

在需要根据相关列的最大值并按第三列分组来检索特定列值的场景中,SQL 提供了一种优化的解决方案。考虑以下表格,其中包含 KEY、NUM 和 VAL 列的数据:

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

目标是从这些数据中检索以下结果:

KEY VAL
A AB
B EF
C HI
D LM

虽然问题中提供的查询可以实现此结果,但使用 row_number() 有一种更优雅的方法:

<code class="language-sql">select key, val
from (
  select t.*, row_number() over (partition by key order by num desc) as seqnum
  from table_name t
) t
where seqnum = 1;</code>
登录后复制

此查询根据 KEY 列高效地对行进行分区,并在每个分区内按降序分配行号 seqnum。通过选择 seqnum 等于 1 的行,我们获得了所需的结果,并保留了所需的分组。

值得注意的是,此方法与原始查询略有不同,因为它始终返回每键一行,而原始查询可能返回多行。如果需要这种行为,可以使用 rank()dense_rank() 代替 row_number()

以上是如何在SQL中根据相关列的最大值高效检索值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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