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番目まで