创建表
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"