「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PostgreSQLの各一意の識別子の最後の行を効率的に取得するにはどうすればよいですか?

PostgreSQLの各一意の識別子の最後の行を効率的に取得するにはどうすればよいですか?

2025-04-04に投稿されました
ブラウズ:835

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

postgresql:各一意の識別子の最後の行

を抽出します。次のデータを検討してください:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;


データセット内の一意のIDの最後の列を取得するには、オペレーターではpostgresの効率的な違いを採用できます。 the_tableから ID、日付DESC;
このクエリは次の出力を返します:

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;
2 2014-02-01 sada

3 2014-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-06-2Dわずかなパフォーマンスを犠牲にする可能性のあるクロスダタベースソリューションを好む、ウィンドウ関数を使用できます:

select id、date、another_info から ( id、date、another_infoを選択します。 row_number()over(日付DESCによるID注文によるパーティション)RNとして the_tableから )t ここで、rn = 1 id;

による注文のほとんどの場合、ウィンドウ関数を含むソリューションは、サブクエリを使用するよりも高速です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3