ホームページ >データベース >mysql チュートリアル >テーブルから最新の 3 つの異なるレコードを選択するにはどうすればよいですか?

テーブルから最新の 3 つの異なるレコードを選択するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-01 04:59:09717ブラウズ

How to Select the 3 Most Recent Distinct Records from a Table?

最近の個別レコードの選択

クエリは、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 を取得します。
  • 次に、メイン クエリはこの ID を使用して、元のテーブルから対応するレコードを取得します。
  • レコードは時間の降順に並べられ、最新の 3 つは LIMIT 3 によって制限されます。

このアプローチを使用すると、クエリは予期される結果、つまり ID 5、4、2 を返します。これは、別個の otheridentifier 値を持つ最新の 3 つのレコードを表します。

以上がテーブルから最新の 3 つの異なるレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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