ホームページ >データベース >mysql チュートリアル >SQL で列の最大値と対応するデータを効率的に取得するにはどうすればよいですか?
SQL での最大値と関連データの効率的な検索
データ アナリストは、ある列から最高値を抽出し、テーブル内の他の列から関連データを抽出する必要が頻繁にあります。 大規模なデータセットの場合、効率が最も重要です。 ID によるグループ化と最大バージョンの選択は簡単そうに見えますが、このアプローチでは関連するタグが省略されます。
より優れた、より効率的な方法では、ROW_NUMBER()
関数を利用します。 次のクエリを考えてみましょう:
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) as rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
このクエリは、ROW_NUMBER()
を使用して、id
列に基づいてグループ (パーティション) 内の各行にランクを割り当てます。 PARTITION BY t.id
は、一意の ID ごとに独立したランキングを保証します。 ORDER BY t.version DESC
行をバージョンの降順にランク付けし、各 ID の最大バージョンを持つ行にランク 1 を割り当てます。
外側の WHERE
句は結果をフィルタリングし、ランク 1 の行のみを保持します。これにより、一意の ID、対応するタグ、および各 ID の最大バージョンが効率的に取得されます。 ROW_NUMBER()
関数は、大規模なデータセットを効果的に処理するための鍵となります。
以上がSQL で列の最大値と対応するデータを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。