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 サイトの他の関連記事を参照してください。