MySQL Rank Function Implementation

create table ds (id int(11), login int(11))
insert into ds (id, login)
values  (1,1),
(2,1),
(3,1),
(4,2),
(5,2),
(6,6),
(7,6),
(8,1)

select result.id,result.login,result.rank from (
SELECT    id,
login,
IF(login=@last,@curRank:=@curRank,@curRank:=@_sequence) AS rank,
@_sequence:=@_sequence+1,
@last:=login
FROM      ds , (SELECT @curRank := 1, @_sequence:=1, @last:=0) r
ORDER BY  id asc) as result;

Leave a Reply

Your email address will not be published. Required fields are marked *