我有三个表,分别registrations
包含用户信息,leaderboard
包含用户 ID 和他们当前所在的级别,最后是“clear_times”,它记录了用户清除某个级别的时间。
我正在使用 MySQL 生成排行榜。最高级别的用户将站在顶部。同一级别的用户将根据clear_time
他们通过级别的时间进行排名。(最先通关的等级排在前面)。
以下是我为此目的使用的代码:
SELECT t1.level, t3.user_id, t3.user_id2, t3.user_type
FROM leaderboard AS t1
INNER JOIN clear_times AS t2 ON ( t1.uid = t2.uid AND (t1.level -1) = t2.level )
INNER JOIN registrations AS t3 ON ( t1.uid = t3.id )
ORDER BY t1.level DESC , t2.clear_time ASC
id' is a primary key of and
uid` 是外键。
该代码非常适合生成排行榜。现在,我想找出给定他/她的特定用户的排名id
。我可以在服务器端脚本上完成,循环记录并使用计数器变量。但我相信有一种方法可以在 MySQL 本身中以某种方式操纵上述代码,这是我做不到的。