mysql - 我无法使用 MySQL 中的 order by 在表中获取特定行的位置
问题描述
我想使用“order by”操作获取 MySQL 表中特定行的位置。假设我有这张桌子:
现在我想按 user_points (升序)对它们进行排序,并在此处获取 Ann 的位置。我想要的输出是'3'。我试图做到这一点,但没有结果......如果有人知道如何做到这一点,我将不胜感激。
解决方案
一种方法是:
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';
但是有了正确的索引,第一个版本可能会快一点。
推荐阅读
- c - 无法拆分和合并内存块:链表段错误
- assembly - 引导扇区中 16 位实模式下的内存行为异常
- r - ggplot:重新排序分类y轴(甘特图)
- flutter - 使 ListView.builder() 显示下一个(或上一个)元素的一部分
- java - 如何以最有效的方式交换 Java 中的值分配?
- excel - Excel formula that can identify 'mixed' sequences of binomially coded data?
- c++ - 为什么 getline() 后需要按两次 Enter?
- odoo - 如何将 Odoo 更新到主要版本
- java - preserve-order="false" 在测试 NG 中不起作用
- spring - 路径的硬编码以及如何避免它?