ホームページ > データベース > mysql チュートリアル > SQLで各一意の識別子の最小値を持つ行を取得するにはどうすればよいですか?

SQLで各一意の識別子の最小値を持つ行を取得するにはどうすればよいですか?

DDD
リリース: 2025-01-24 08:01:12
オリジナル
120 人が閲覧しました

How to Retrieve Rows with Minimum Values for Each Unique Identifier in SQL?

SQL の効率的なフィルタリング: 各一意の識別子の最小値の行を取得します

データベース管理では、一意の値とそれに対応する最小値を持つレコードを抽出する必要があることがよくあります。一意の識別子の列と関連する値の列を含むテーブルがあり、目標は各一意の識別子から最小値に対応する行を取得することであるとします。

チャレンジ

次の形式を考えてみましょう:

id game point
1 x 5
1 z 4
2 y 6
3 x 2
3 y 5
3 z 8

目標は、一意の game 値ごとに最小の point 値を持つ行を見つけることです。期待される出力は次のとおりです:

id game point
1 z 4
2 y 6
3 x 2

解決策

これは、次の SQL クエリを使用して実現できます:

<code class="language-sql">SELECT tbl.*
FROM TableName tbl
INNER JOIN (
    SELECT Id, MIN(Point) AS MinPoint
    FROM TableName
    GROUP BY Id
) tbl1 ON tbl1.id = tbl.id
WHERE tbl1.MinPoint = tbl.Point;</code>
ログイン後にコピー

説明

  • 内部クエリは、一意の各 Id の最小 Point 値を計算し、結果を派生テーブル tbl1 に保存します。
  • メインクエリは、共通の Id 列に基づいて、元のテーブル TableNametbl1 と結合します。
  • 最後に、結果をフィルタリングして、最小の Point 値 (tbl1 から) が元のテーブルの Point 値と一致する行のみを含めます。

このクエリを使用すると、game 列でグループ化された最小の Point 値を持つ一意の行を効率的に取得できます。

以上がSQLで各一意の識別子の最小値を持つ行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート