I would not use another table. One request is enough.
create table mytable ( id int not null auto_increment primary key, username varchar(50), email varchar(50), number int ) engine = myisam; insert into mytable (username,email,number) values ('a','aaa',10), ('b','bbb',30), ('c','ccc',50), ('d','ddd',30), ('e','eee',20), ('f','fff',45), ('g','ggg',20); select @r:=@r+1 as rnk,username,email,number from mytable,(select @r:=0) as r order by number desc +
This is a smarter version that treats links.
select @r:=@r + 1 as rn, username,email, @pos:= if(@previous<>number,@r,@pos) as position, @previous:=number as num from mytable,(select @r:=0,@pos:=0,@previuos:=0) as t order by number desc +------+----------+-------+----------+--------+ | rn | username | email | position | num | +------+----------+-------+----------+--------+ | 1 | c | ccc | 1 | 50 | | 2 | f | fff | 2 | 45 | | 3 | b | bbb | 3 | 30 | | 4 | d | ddd | 3 | 30 | | 5 | e | eee | 5 | 20 | | 6 | g | ggg | 5 | 20 | | 7 | a | aaa | 7 | 10 | +------+----------+-------+----------+--------+ 7 rows in set (0.00 sec)
Nicola cossu
source share