创建表
CREATE TABLE `a` (
`ID` INT(10) NULL DEFAULT NULL,
`class` INT(10) NULL DEFAULT NULL,
`score` INT(10) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
insert into a values (1,1,80);
insert into a values (2,1,80);
insert into a values (3,1,80);
insert into a values (4,1,80);
insert into a values (5,2,80);
insert into a values (6,2,80);
insert into a values (7,2,80);
insert into a values (8,2,80);
insert into a values (9,2,80);
insert into a values (10,2,80);
对 class进行分组 取 每组的前2条
select id,class,score,rank from (
select b.id,b.class,b.score,@rownum:=@rownum+1 ,
if(@pdept=b.class,@rank:=@rank+1,@rank:=1) as rank,
@pdept:=b.class
from (
select id,class,score from a order by id
) b ,(select @rownum :=0 , @pdept := null ,@rank:=0) c ) result
having rank <3 ;
运行结果
"id" "class" "score" "rank"
"1" "1" "80" "1"
"2" "1" "80" "2"
"5" "2" "80" "1"
"6" "2" "80" "2"