ホームページ > データベース > mysql チュートリアル > SQLを使用して列内の最大値を持つ行のみを選択するにはどうすればよいですか?

SQLを使用して列内の最大値を持つ行のみを選択するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-25 20:57:11
オリジナル
217 人が閲覧しました

How to Select Only Rows with the Maximum Value in a Column Using SQL?

sql列の最大行を選択します:完全なガイド

問題の説明:

ドキュメント情報を含む次の表を考慮してください:

id rev content
1 1 ...
2 1 ...
1 2 ...
1 3 ...
目標は、各IDの1行を取得することです。これには、最大改訂数(Rev)のドキュメントのみが含まれています。指定されたデータの予想出力は次のとおりです

この問題は通常SQLに表示され、ユーザーが指定されたグループ識別子の列に最大値を見つけるように促します。
id rev content
1 3 ...
2 1 ...

ソリューション1:サブクエリ接続を使用

最初の方法には、サブクエリ、識別子(ID)の最大値、およびサブクエリ識別グループのREV列の作成が含まれます。グループ識別子と等しい条件を最大値に使用して、この子クエリをメインウォッチに接続できます。

ソリューション2:左に接続されています
<code class="language-sql">SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev</code>
ログイン後にコピー

2番目のメソッドは、左接続操作を使用して独自に関連付けます。入札アイデンティティ(ID)に等しい条件を指定します。最大回転値の行のみが選択されていることを確認するために、右のREV値が左の回転値よりも少ないかどうかを確認するために条件が追加されます。最後に、アプリケーションフィルターは、右側にREV値のみを持つ行を使用します(最大REV値を示します)。

結論:
<code class="language-sql">SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
    ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;</code>
ログイン後にコピー
両方のソリューションは同じ結果を持ち、SQL ANSIと互換性があります。最も適切な選択は、個人の好みと特定のデータベースパフォーマンス特性に依存します。さまざまなシナリオで最適な方法を決定するために、ベンチマークテストを実行することをお勧めします。

以上がSQLを使用して列内の最大値を持つ行のみを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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