【PostgreSQL】ROWNUMのように行番号(現在行)を取得するROW_NUMBER
PostgreSQLでSELECTした結果に連番を付けるやり方を調査したらウィンドウ関数を使えば出来そうだったのでメモ。
PostgreSQL 8.4から使えるようになったウィンドウ関数。これを使うと今までOracleのようにROWNUMを使えなかったのが、ROW_NUMBER()で実現できる。
8.3以前で実現する場合はshiro氏のブログを参考に。
単純にselectした順番を出力する場合
select row_number() over(), * From tbm_user
例えば年齢ごとに連番を付けることも可能
select row_number() over(partition by age), * From tbm_user
order by句で並び替えたらover()で明示しないとselectした順番にはならない
select row_number() over(order by name), * From tbm_user order by name
応用すれば今までサブクエリーで書いていたのが簡単に実現できそう。
下記サイトも参考に