首页 > 解决方案 > 我无法使用 MySQL 中的 order by 在表中获取特定行的位置

问题描述

我想使用“order by”操作获取 MySQL 表中特定行的位置。假设我有这张桌子:

在此处输入图像描述

现在我想按 user_points (升序)对它们进行排序,并在此处获取 Ann 的位置。我想要的输出是'3'。我试图做到这一点,但没有结果......如果有人知道如何做到这一点,我将不胜感激。

标签: mysqlsqlsql-order-by

解决方案


一种方法是:

select count(*) + 1
from t
where t.user_points < (select t2.user_points
                       from t t2
                       where t2.name = 'Ann'
                      );

这相当于窗口函数rank()

select t.*, rnk
from (select t.*, rank() over (order by score) as rnk
      from t
     ) t
where name = 'Ann';

但是有了正确的索引,第一个版本可能会快一点。


推荐阅读