ホームページ >データベース >mysql チュートリアル >MySQL の各 ID で最も高いバージョン ID を持つ行を選択するにはどうすればよいですか?

MySQL の各 ID で最も高いバージョン ID を持つ行を選択するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 01:12:10834ブラウズ

How to Select the Row with the Highest Version ID for Each ID in MySQL?

MySQL: グループによって返される行の選択の制御

MySQL では、各 ID の最も高いバージョンを持つ行を取得できます。複雑なタスク。ただし、この目的を達成するために使用できるアプローチは複数あります。

1 つの方法は、サブクエリを利用することです。

SELECT *
FROM (SELECT * FROM table ORDER BY version_id DESC) t1
GROUP BY t1.id

このサブクエリは、行をバージョン ID の降順で並べ替えます。それぞれのID。その後、メイン クエリは、並べ替えられた行を ID ごとにグループ化します。この方法では、メモリ内に一時テーブルが作成されますが、(id, version_id) 列にインデックスが存在する場合は効率的です。

別の戦略には、ネストされたクエリが含まれます。

SELECT *
FROM (SELECT id, max(version_id) as version_id FROM table GROUP BY id) t1
INNER JOIN table t2 on t2.id=t1.id and t1.version_id=t2.version_id

これクエリは、サブクエリ内の各 ID の最大バージョン ID を計算します。次に、メイン クエリは、ID 列と version_id 列を使用してサブクエリを元のテーブルと結合し、最大のバージョン ID を持つ行を取得します。

どちらの方法も、各 ID で最も高いバージョン ID を持つ行を選択するための効果的なソリューションを提供します。 。最も適切なアプローチは、アプリケーションの特定の要件とパフォーマンスに関する考慮事項によって異なります。

以上がMySQL の各 ID で最も高いバージョン ID を持つ行を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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