MySQL排名查询。获取特定成员的位置

MySQL排名查询。获取特定成员的位置,mysql,sql,Mysql,Sql,我的数据库中有下表: TimeRankuser id、名称、时间 我想按时间排序表格,并获取表格上特定ID的位置,例如: 68号用户位于第三位置 我只需要执行一个返回用户位置的查询 MySQL没有row_number函数,所以我不知道怎么做 SELECT x.user-id, x.name, x.time, x.position FROM (SELECT t.user-id, t.name,

我的数据库中有下表: TimeRankuser id、名称、时间

我想按时间排序表格,并获取表格上特定ID的位置,例如:

68号用户位于第三位置

我只需要执行一个返回用户位置的查询

MySQL没有row_number函数,所以我不知道怎么做

SELECT x.user-id, 
       x.name,
       x.time,
       x.position
  FROM (SELECT t.user-id,
               t.name,
               t.time,
               @rownum := @rownum + 1 AS position
          FROM TABLE TimeRank t
          JOIN (SELECT @rownum := 0) r
          ORDER BY t.time) x
 WHERE x.user-id = 123
备选方案:

SELECT user-id,
       (SELECT COUNT(*) FROM TimeRank WHERE time <= (SELECT time FROM TimeRank WHERE user-id = 123)) AS position,
       time,
       name
FROM TimeRank
WHERE user-id = 123

可以使用变量生成位置列

set @pos=0;

select pos,user_id
from (select @pos:=@pos+1 pos,user_id from TimeRank order by time) s
where user_id=68;
如果需要索引,可以向表中添加列,并使用

set @pos=0;

update TimeRank set position=(@pos:=@pos+1) order by time;

编辑您的问题并提供示例数据和所需结果。