MySQL在记录集中的位置
我正在订购这样的记录集:MySQL在记录集中的位置,mysql,sql,Mysql,Sql,我正在订购这样的记录集: SELECT * FROM leaderboards ORDER BY time ASC, percent DESC 假设我有与您相关的记录的id,我如何按照上面的顺序找出它在记录集中的位置 我明白如果只是按“时间”订购,我可以 SELECT count from table where time < your_id 但是有两个订单让我很困惑。这是你想要的吗 SELECT count(*) FROM leaderboards lb cross join
SELECT * FROM leaderboards ORDER BY time ASC, percent DESC
假设我有与您相关的记录的id,我如何按照上面的顺序找出它在记录集中的位置
我明白如果只是按“时间”订购,我可以
SELECT count from table where time < your_id
但是有两个订单让我很困惑。这是你想要的吗
SELECT count(*)
FROM leaderboards lb cross join
(select * from leaderboards where id = MYID) theone
WHERE lb.time < theone.time or
(lb.time = theone.time and lb.percent >= theone.percent);
这假设时间、百分比没有重复项。您可以使用变量分配计数器:
SELECT *, @ctr := @ctr + 1 AS RowNumber
FROM leaderboards, (SELECT @ctr := 0) c
ORDER BY time ASC, percent DESC
Gordon,若ORDER子句的第一个字段中并没有重复项,我相信在二阶条件中并没有任何意义,因为值是unique@AlmaDoMundo . . . 我的意思是这对是不同的,不是时间值。我不知道你的意思。你想得到第六排到第十排或者类似的答案吗?意思是说你的反应比第一排稍微快一点I@vollie-我回答了OP在评论中提出的一个问题,但后来被删除了。我知道所有关于速度稍微快一点的事情,因为我通常都会输:谢谢你的支持!