どの個別のレコード ID が最新ですか?
特定のデータベース テーブルでは、特定のレコードが共有列によって相互接続されています。目的は、この共有列値に関連付けられた最新の 3 つの個別のレコード ID を識別することです。
これを達成するには、以下のサンプル テーブルを検討してください。
id | time | text | otheridentifier |
---|---|---|---|
1 | 6 | apple | 4 |
2 | 7 | orange | 4 |
3 | 8 | banana | 3 |
4 | 9 | pear | 3 |
5 | 10 | grape | 2 |
最初は、直感的なアプローチが考えられます。 otheridentifier 列でグループ化し、その後時間の降順で並べ替えます。ただし、この方法では望ましい結果が得られません:
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
このクエリには、正しい ID 4 と 2 ではなく、誤って ID 3 と 1 のレコードが含まれます。この不一致の理由は、クエリの実行にあります。 order: グループ化は順序付けよりも優先されます。
意図した結果を得るには、より複雑な解決策が必要です。 required:
SELECT * FROM `table` WHERE `id` = ( SELECT `id` FROM `table` as `alt` WHERE `alt`.`otheridentifier` = `table`.`otheridentifier` ORDER BY `time` DESC LIMIT 1 ) ORDER BY `time` DESC LIMIT 3;
この変更されたクエリは、サブクエリを利用して、個別の他の識別子の値ごとに最新の時刻値を持つ単一の ID を選択します。この最適化されたクエリにより、個別のレコード識別子 5、4、および 2 の望ましい出力が保証されます。
以上が共有列に基づいて最新の 3 つの異なるレコード ID を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。