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

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

DDD
リリース: 2024-12-17 14:59:10
オリジナル
394 人が閲覧しました

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

Postgresql: 各一意の識別子の最後の行の抽出

PostgreSQL では、データセット内のそれぞれの個別の識別子に関連付けられた最後の行。次のデータを考えてみましょう。

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

データセット内の各一意の ID の情報の最後の行を取得するには、Postgres の効率的な個別演算子を使用できます。

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

このクエリは次の値を返します。出力:

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

ご希望の場合はクロスデータベース ソリューションではパフォーマンスが若干犠牲になる可能性がありますが、ウィンドウを使用できます。 function:

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 で各一意の識別子の最後の行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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