ホームページ >データベース >mysql チュートリアル >SQL列の最大値で行のみを選択する方法は?

SQL列の最大値で行のみを選択する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-25 21:07:10875ブラウズ

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

SQL: 列

の最大値を持つ行を選択します

列 ID、rev、および content を含む単純化されたドキュメント テーブルを考えてみましょう。テーブルをフィルタリングして、各 ID の最大 rev 値を含む行を取得するには、SQL 関数 MAX() および GROUP BY を使用できます。

GROUP BY を使用して最大値を抽出します

<code class="language-sql">SELECT id, MAX(rev)
FROM YourTable
GROUP BY id;</code>

ただし、各 ID の最大 Rev 値を含むデータ行全体を取得するには、次の 2 つのことを行うことができます:

方法 1: 最大のサブクエリで結合

<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: 左結合に独自の条件を使用する

<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>

どちらのメソッドも左結合とフィルター条件を利用して、各 ID の最大の Rev 値を持つ行のみを取得します。 2 番目の方法は、最大の rev 値を持つ重複行を除外する結合条件を使用して、テーブルをそれ自体に左結合します。

パフォーマンスノート

これらのメソッドのパフォーマンスは、データベースの種類、テーブルのサイズ、インデックスの使用率などの要因によって異なる場合があります。両方のアプローチをベンチマークして、特定のシナリオに最適なソリューションを決定することをお勧めします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。