create table tmp(id int, code varchar(5));
insert into tmp values(1, 'a1');
insert into tmp values (2, 'a1');
insert into tmp values (3, 'a1');
insert into tmp values (4, 'a1');
insert into tmp values (5, 'a1');
insert into tmp values (6, 'a1');
insert into tmp values (1, 'b1');
insert into tmp values (2, 'b1');
insert into tmp values (3, 'b1');
insert into tmp values (4, 'b1');
insert into tmp values (5, 'b1');
insert into tmp values (6, 'b1');
insert into tmp values (7, 'b1');
set @a =0; set @b = (select code from tmp);
select * from (select code, (@a:=if(@b=code, @a+1, 0)) as row_num, @b:=code from tmp) as t where row_num < 5;