LoginSignup
1
2

More than 3 years have passed since last update.

PostgreSQL 小ネタ備忘録

Posted at

複雑めなSQLを書く時に重宝している Snippet を記録していこうかと。

COUNT(row.*) OVER()

LIMIT を越えて全件数を取得する

ポイントは Window Function の OVER()。Window Function がなんなのか、細かいことはよく理解できていない。

基本的にリストを取得する時はページネーションを行なっていると思うけど、LIMIT を設定した状態で COUNT を実行しても、LIMITまでの数値しか出ないところを、一発で取得できるようにしてくれる。
一発のSQLで取得できるのは楽だけど、ライブラリとの関係で使いづらかったりする時もあるかも。

ROW_NUMBER() OVER(PARTITION BY column ORDER BY DESC)

1体多の関連テーブルから特定の条件で1件だけ取得する

このSQL単体では機能しないけど、このSQLを含めたサブクエリを利用することで、例えば「最新の一件」とかを取得できる。
「リストを取得するタイミングで関連するテーブルの情報を一見だけ欲しい!」みたいな時にアプリケーション側でのマージ作業を省けるのが嬉しいところ。

この snippet を知ったのはこの Stack Overflow から

とりあえずそんな感じで。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2