LoginSignup
1
0

More than 1 year has passed since last update.

SQLで使いそうな記法Tips

Last updated at Posted at 2021-12-26

備忘録。今後使うかもしれない記法。
随時更新予定。
postgresで動作確認。

複数のカラムの中でいずれか特定の値で部分一致するレコードを検索する


xテーブル

id memo_a memo_b memo_c
1 卵を買った 水泳をした ドライブに行った
2 豆腐を買った ランニングをした 釣りに行った

memo_a ~ memo_c のなかで、「釣り」を含むレコードを取り出したい場合

ORでつなげれば実現できるが、カラムが多いほど記述量が増えてしまう。
対象のカラムをすべて繋げてから検索すると1度で済む。

SELECT * FROM x
WHERE concat(memo_a, memo_b, memo_c) ILIKE '%$input%'

親テーブルのIDごとに連番を振りたい

1:N 関係の schoolsテーブル : studentsテーブル があるとする

students テーブル

id school_id name
1 1 田中
2 1 鈴木
3 2 本田
4 1 佐藤
5 2 後藤

これを親テーブルの school_id ごとに連番を算出したい場合、ROW_NUMBER関数を利用する

SELECT 
    s.*, 
    ROW_NUMBER() OVER(partition by s.school_id ORDER BY s.id) AS order
FROM students s

結果

id school_id name order
1 1 田中 1
2 1 鈴木 2
4 1 佐藤 3
3 2 本田 1
5 2 後藤 2
1
0
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
0