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 サイトの他の関連記事を参照してください。