首頁 > 資料庫 > mysql教程 > 如何在SQL中根據相關列的最大值高效檢索值?

如何在SQL中根據相關列的最大值高效檢索值?

Susan Sarandon
發布: 2025-01-17 19:07:10
原創
230 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板