Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在记录集中的位置_Mysql_Sql - Fatal编程技术网

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在评论中提出的一个问题,但后来被删除了。我知道所有关于速度稍微快一点的事情,因为我通常都会输:谢谢你的支持!