0

我正在订购这样的记录集:

SELECT * FROM leaderboards ORDER BY time ASC, percent DESC

假设我有与您相关的记录的 id,我怎样才能找出它在记录集中的位置,如上所示?

我知道如果它只是通过说“时间”来订购的,我可以

SELECT count from table where time < your_id

但是有 2 个 ORDER BY 让我感到困惑。

4

2 回答 2

2

您可以使用变量来分配计数器:

SELECT *, @ctr := @ctr + 1 AS RowNumber
FROM leaderboards, (SELECT @ctr := 0) c
ORDER BY time ASC, percent DESC
于 2013-08-23T14:18:44.477 回答
0

这是做你想做的吗?

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);

这假设 没有重复项time, percent

于 2013-08-23T14:15:23.360 回答