根据唯一列值选择有限的行数

时间:2017-10-25 11:28:55

标签: mysql select unique

我有一个以下格式的表格

ID SOURCE_ID
 1 1
 2 1
 3 1
 4 2
 5 3
 6 3
 7 4
 8 4
 9 4
10 4
11 4
12 1
13 1
14 3
15 3
16 3
17 3
18 2
19 2

我希望能够为每个唯一的source_id选择5条记录MAX。

所以我最终应该为source_id = 1返回5行,为souce_id = 2返回5行,依此类推。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

E.g:

SELECT id
     , source_id 
  FROM 
     ( SELECT id
            , source_id
            , CASE WHEN @prev = source_id THEN @i:=@i+1 ELSE @i:=1 END i
            , @prev := source_id prev 
         FROM my_table
            , (SELECT @prev:=null,@i:=0) vars 
        ORDER 
           BY source_id
            , id
     ) x 
 WHERE i <=5 
 ORDER 
    BY id;