Để làm điều đó, tôi đã sử dụng một vài biến, cấu trúc bảng, tôi đã tạo của riêng mình chỉ để thử nghiệm và đó là:
create table abc (id int, name varchar(20),type int);
insert into abc values
( 1 , 'A' , 1 ),
( 2 , 'A' , 2 ),
( 3 , 'B' , 1 ),
( 4 , 'A' , 1 ),
( 5 , 'A' , 4 ),
( 6 , 'A' , 5 )
truy vấn kết thúc như thế này:
set @a:='';
set @counter:=1;
set @groupby:=0;
select *,count(REPEATED) from (select name,if(@a=name,@counter:[email protected]+1,@counter:=1) as rep,if(@counter=1,@groupby:[email protected]+1,@groupby) as repeated,@a:=name type from abc) as t group by repeated
bạn có thể thấy nó hoạt động trong SQLFIDDLE nếu bạn có bất kỳ câu hỏi nào, hãy cho tôi biết.
Trong SQLFIDDLE