ホームページ >データベース >mysql チュートリアル >PostgreSQL で各 ID の最新の行を効率的に取得するにはどうすればよいですか?
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 ごとに最新の行を取得することです。
PostgreSQL で最も効率的なアプローチは、DISTINCT ON 演算子を使用することです。
SELECT DISTINCT ON (id) id, date, another_info FROM the_table ORDER BY id, date DESC;
このクエリは、一意の ID ごとに最初の個別の行のみを識別し、降順で並べ替えて返します。日付列の順序。
クロスデータベースの場合解決策として、ウィンドウ関数を活用できます。
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;
このクエリは、日付の降順で各 ID の行番号を計算するウィンドウ関数を作成します。 WHERE rn = 1 条件は、各 ID の最高ランクの行のみを含むように行をフィルター処理し、最後の ORDER BY 句により、結果が ID 順に並べられるようにします。
以上がPostgreSQL で各 ID の最新の行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。