mysql - 如何确定一行在有序 SQL 表中的位置?

标签 mysql sql

我有一个用户表和一个“积分”列。我想确定按“积分”排序的所有用户的行数/位置。

我可以只获取所有用户数据的结果,然后执行 while 循环,并在 id 等于必要用户时停止。但我相信有一种更有效的方法可以做到这一点,因为我的表将包含约 100 000 行。

最佳答案

试试这个:

SET @rownum = 0; 
Select sub.*, sub.rank as Rank
FROM
(
   Select *,  (@rownum:=@rownum+1) as rank
   FROM   users
   ORDER BY points 
) sub
WHERE rank = 15

关于mysql - 如何确定一行在有序 SQL 表中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254109/

相关文章:

mysql - 在存储过程中创建事件

MySQL 8 忽略整数长度

mysql - 使用聚合、子查询和分组进行查询不起作用

sql - 根据以前的日期查询带有参数的记录

mysql - 使用 Codeigniter 执行多条 sql 语句

mysql - LibreOffice Base 表单通过查询编辑表格

用于搜索的 MySQL 多索引与多列索引

MySQL如何根据多个属性行的相似性对对象进行排序

mysql - 如果某一数据有多条记录,如何求和?

MySQL COUNT 和 IFNULL