最近の個別レコードの選択
クエリは、otheridentifier 列の値が異なるテーブルから最新の 3 つのレコードを取得することを目的としています。 。ただし、GROUP BY と LIMIT を使用した現在のアプローチでは予期しない結果が生じます。
問題を調べてみましょう。 GROUP BY 操作は、同じ他の識別子を持つ行を結合します。順序付けはグループ化後に行われるため、各グループの最新レコードが選択されるとは限りません。
サブクエリによる解決策
この問題に対処するには、サブクエリを使用して、個別の他の識別子ごとの最新のレコード。この情報はメイン クエリで使用され、目的のレコードを選択します。
次のクエリはこれを実現します。
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 を返します。これは、別個の otheridentifier 値を持つ最新の 3 つのレコードを表します。
以上がテーブルから最新の 3 つの異なるレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。