我有一个类似的问题,但有这种“user-03”类行重复多次。而且我还在使用两张桌子。
表结构:
分数表[分数浮点数,uid int,时间戳日期时间]
用户表[用户名varchar(500),id int等...]
排名标准是根据最高分数列出用户。所以我在sql查询中使用group by和JOIN修改了查询,如下所示。
排名系统。
SELECT *, @rownum:=@rownum+1 as rank
FROM (
select MAX(s.score) as score,u.username as username
from scorelog s join userdb u on s.uid=u.id
group by s.uid
order by MAX(s.score) desc
) user_rank, (SELECT @rownum:=0) r要识别单个行的位置及其在db上的排名,请使用以下查询。
该
SELECT *
FROM ( SELECT *, @rownum:=@rownum+1 as rank
FROM (
select MAX(s.score) as score,
u.username as username,
s.uid as uid,s.
timestamp as timestamp
from scorelog s join userdb u on s.uid=u.id
group by s.uid order by MAX(s.score) desc
) user_rank, (SELECT @rownum:=0) r
)t where username = 'johndoe'另请参阅stackoverflow中的以下资源,它们提供了类似的解决方案。
querying for user's ranking in one-to-many tables
SQL ranking solution
PHP MYSQL query result "RANKING"