

LIMITを特定のカラムを基準に適応する事は可能でしょうか？

例として、以下のようなデータがあるとし同一idのレコードを2件ずつ抽出したいです。

**対象のデータ:**

no | id | name  
---|---|---  
1 | 1000 | 太郎  
2 | 1000 | 花子  
3 | 1000 | 次郎  
4 | 2000 | 太郎  
5 | 2000 | 花子  
6 | 3000 | 花子  
7 | 4000 | 次郎  
8 | 4000 | 花子  
9 | 4000 | 次郎  
10 | 4000 | 次郎  
  
**希望する結果:**

no | id | name  
---|---|---  
1 | 1000 | 太郎  
2 | 1000 | 花子  
4 | 2000 | 太郎  
5 | 2000 | 花子  
6 | 3000 | 花子  
7 | 4000 | 次郎  
8 | 4000 | 花子  
  
※id=3000の場合、同一idのレコードが2件以上ないため、除外せずに1レコードだけでも上記のように表示させたいです。


CC BY-SA 4.0
2021-05-26T07:49:13.143
76077
2021-05-26T15:28:46.583
2021-05-26T08:06:01.260
45502
45502
question
mysql sql
特定カラムに対してLimit条件を指定してレコードを抽出したい


MySQL 8.0 であれば `ROW_NUMBER()` が利用できますので、

[MySQL 8.0 Reference Manual :: 12.21.1 Window Function
Descriptions](https://dev.mysql.com/doc/refman/8.0/en/window-function-
descriptions.html#function_row-number)

以下の様に書くことができます。

[code]

    SELECT no, id, name FROM (
      SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY no) as ranking
      FROM member
    ) AS _ WHERE ranking <= 2;
    
[/code]


CC BY-SA 4.0
2021-05-26T15:28:46.583
76089
2021-05-26T15:28:46.583
76077
answer