[Postgresql]1つ前のレコードを取得する

LAG と OVER と WITH を使う。

WITH tmp AS (
SELECT id, LAG(id, 1, null) OVER (ORDER BY id) AS before_id
FROM table ORDER BY id DESC
)
SELECT before_id FROM tmp WHERE id = /*id*/

ちなみに WITH 句を使わない

SELECT id, LAG(id, 1, null) OVER (ORDER BY id) AS before_id
FROM apply ORDER BY id DESC
WHERE id = /*id*/

だとリスト上に前の id がないから null になる。

かわのくんとは

Web系IT企業でプログラミングやマネジメントをしています。趣味で音楽を少々。

Youtubeでライブ動画配信中

Ustreamでライブ動画配信中

スマートフォン向けにPCサイトを自動変換(コンバート)する『CONV2SP』 CSS作成支援ツール『CSSツクール』