首頁 > 資料庫 > mysql教程 > 如何在 SQL 中使用聯結來尋找具有最小值的不同行?

如何在 SQL 中使用聯結來尋找具有最小值的不同行?

DDD
發布: 2025-01-24 08:21:09
原創
322 人瀏覽過

How to Find Distinct Rows with Minimum Values in SQL Using Joins?

SQL 查詢優化:檢索具有最小值的唯一行

本指南演示了一種高效的 SQL 技術,用於從特定列中提取包含最小值的唯一行。 在處理分組數據時,這通常是必要的,並且需要結合連接和過濾。

考慮以下示例表:

<code class="language-sql">id  game   point
1    x      5
1    z      4
2    y      6
3    x      2
3    y      5
3    z      8</code>
登入後複製

目標是檢索每個唯一 idpointgame,顯示該遊戲的最小 point 值。 預期結果集是:

<code class="language-sql">id  game   point
1    z      4
2    y      6
3    x      2</code>
登入後複製

以下 SQL 查詢可實現此目的:

<code class="language-sql">SELECT tbl.*
FROM TableName tbl
INNER JOIN (
    SELECT game, MIN(point) AS min_point
    FROM TableName
    GROUP BY game
) AS tbl1 ON tbl1.game = tbl.game AND tbl1.min_point = tbl.point;</code>
登入後複製

以下是查詢的詳細信息:

  • 內連接:這有效地將TableName(別名為tbl)與子查詢的結果(別名為tbl1)結合起來。
  • 子查詢: 這將使用 point 計算每個唯一 game 的最小值 MIN(point),並按 game 對結果進行分組。 結果是一個包含 game 及其對應的最小值 point.
  • 的表
  • ON 子句: 連接條件確保僅包含主表和子查詢之間 gamepoint 匹配的行。 這會精確選擇每個 point.game 具有最小
  • 的行。

這種優化的查詢避免了不必要的複雜性並直接檢索所需的結果。 與其他方法相比,這是一種更簡潔且通常更快的解決方案。

以上是如何在 SQL 中使用聯結來尋找具有最小值的不同行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板