ホームページ > データベース > mysql チュートリアル > PostgreSQLで各一意のIDの最後の行を取得するにはどうすればよいですか?

PostgreSQLで各一意のIDの最後の行を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-01 09:06:11
オリジナル
190 人が閲覧しました

How to Retrieve the Last Row for Each Unique ID in PostgreSQL?

PostgreSQL で各 ID の最後の行を取得する

データを操作するとき、多くの場合、さまざまなデータセットから特定の情報を抽出する必要があります。 PostgreSQL の場合、ユーザーは一意の ID ごとに最新のレコードを取得する必要があるシナリオに遭遇する可能性があります。

シナリオ

次の表を検討してください:

id date another_info
1 2014-02-01 kjkj
1 2014-03-11 ajskj
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-02-01 sfdg
3 2014-06-12 fdsA

目的

目標は、新しいファイル内の各一意の ID のデータの最後の行を抽出することです。表:

id date another_info
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-06-12 fdsA

解決策 1: Postgres の DISTINCT ON 演算子を使用する

Postgres の DISTINCT ON 演算子は、このシナリオを効率的に処理します:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;
ログイン後にコピー

解決策 2: を使用するWindow Function

データベース間の互換性を確保するため、row_number() のようなウィンドウ関数を使用します。

select id, date, another_info
from (
  select id, date, another_info, 
         row_number() over (partition by id order by date desc) as rn
  from the_table
) t
where rn = 1
order by id;
ログイン後にコピー

ベンチマークは通常、ウィンドウ関数によるアプローチがサブクエリよりも高速であることを示しています。

以上がPostgreSQLで各一意のIDの最後の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート