MySQL排名查询。获取特定成员的位置
我的数据库中有下表: TimeRankuser id、名称、时间 我想按时间排序表格,并获取表格上特定ID的位置,例如: 68号用户位于第三位置 我只需要执行一个返回用户位置的查询 MySQL没有row_number函数,所以我不知道怎么做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,
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;
编辑您的问题并提供示例数据和所需结果。