ホームページ > データベース > mysql チュートリアル > SQL で最小値を持つ一意の行を選択するには?

SQL で最小値を持つ一意の行を選択するには?

Linda Hamilton
リリース: 2025-01-24 08:11:10
オリジナル
536 人が閲覧しました

How to Select Unique Rows with the Minimum Value in SQL?

SQL クエリで最小値を持つ一意の行を選択するにはどうすればよいですか?

データベースでは、多くの場合、特定の列の最小値を含むレコードを抽出する必要があります。テーブルに「id」、「game」、「point」列が含まれているとします。 (「ゲーム」でグループ化された) 最小の「ポイント」値を持つ行のみを選択するには、次の有効な SQL クエリを使用できます:

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

このクエリは、一意の「id」ごとに最小の「point」値を持つ行のみが選択されることを保証します。括弧内のサブクエリは、各「id」の最小「point」値を計算し、それを一時列「MinPoint」に保存します。次に、メイン クエリは、共通列 'id' に基づいて元のテーブル ('TableName') をこの一時テーブルと結合します。

条件 'tbl1.MinPoint = tbl.Point' をフィルター処理することにより、クエリは、'point' 値が各 'id' グループ内の最小値と一致する行のみが返されるようにします。これにより、目的の出力が生成され、「ゲーム」ごとに最小の「ポイント」値を持つ一意の行が選択されます。

例:

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

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

このテーブルに対して上記のクエリを実行すると、次の出力が生成されます:

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

ご覧のとおり、クエリは各「ゲーム」の最小の「ポイント」値を持つ一意の行を正しく識別します。

注: 元のサンプル データと結果の間には矛盾があります。結果テーブルは SQL ステートメントの結果と一致するように修正されています。 修正された結果の表には、各 id の最小の point 値を持つ行が表示されます。 game グループ化によって最小の point 値を選択する必要がある場合は、SQL ステートメントを変更する必要があります。

以上がSQL で最小値を持つ一意の行を選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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