mysql グループ化して各グループを〇件ずつ取得したい(row_number() over())
「group by」でグループ化した各n行ずつ欲しい
作成日:2022-11-17, 更新日:2023-01-15
基本
ウィンドウ関数(窓関数)で対応可能
※existsとかでも出来るらしいがよくわからない
▼「ウィンドウ関数(窓関数)」のメモ
mySQL 最大値を持つレコードを取得(row_number() over())
サンプル
▼3件ずつ取得
SELECT *
FROM (
select *
,(
row_number() over(
partition by 「グループ化したいカラム」
order by 並び順
)
) max_num
FROM テーブル
) xxx # 各グループの順番を割り振る
WHERE 1
and max_num <= 3 # 各グループのn番目まで