PostgreSQL でカテゴリ別にグループ化された最大日付 ID を取得する
データベース操作では、多くの場合、特定の条件に基づいてレコードを取得する必要があります。このようなタスクの 1 つは、特定のデータセット内の各カテゴリの最大の日付を持つ ID を選択することです。これは、PostgreSQL で DISTINCT ON 句を使用すると効果的に実現できます。
次のサンプル データを考えてみましょう:
id category date 1 a 2013-01-01 2 b 2013-01-03 3 c 2013-01-02 4 a 2013-01-02 5 b 2013-01-02 6 c 2013-01-03 7 a 2013-01-03 8 b 2013-01-01 9 c 2013-01-01
それぞれの最大日付を持つ ID を選択するにはカテゴリでは、次を使用できますクエリ:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
説明:
このクエリの結果
7 2 6
DISTINCT ON が特に便利であることに注意してください。同じ最大日付を持つ複数のレコードが存在する場合。このような場合、各カテゴリの最初の一意のレコードを選択する方法が提供されます。
以上がPostgreSQL で各カテゴリの最大日付 ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。