mysql - 使用 where 子句获取行号

标签 mysql sql

//表格

+------+-------+
| user | score |
+------+-------+
|   2  |  500  |
|   3  |  780  |
|   4  |  50   |
|   5  |  250  |
|   6  |  650  |
+------+-------+

//当前sql

SELECT @rn:=@rn+1 AS rank, user, score
FROM (
  SELECT user,score
  FROM scores
   WHERE user = 2
  ORDER BY score DESC
) t1, (SELECT @rn:=0) t2

上面的sql返回id = 2的用户的rank = 1,但是rank是3。当不添加where子句时是正确的。但我希望能够搜索特定用户并获得他的排名

最佳答案

尝试这样的事情:

select * from
(SELECT @rn:=@rn+1 AS rank, user, score
  FROM scores,
  (SELECT @rn:=0) t2
ORDER BY score DESC) t
where user=2

fiddle

关于mysql - 使用 where 子句获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958479/

相关文章:

mysql - 根据每天的最大值组连接表

mysql - 按距离排序,你认为我应该怎么做?

mysql - 使用多列检查使列 UNIQUE

sql - 如何获得 derby db 上 2 个 datetimestamp 之间的小时差?

javascript - 使用变量时 SELECT FROM WHERE 语句不起作用...

mysql - 在 MySQL 中使用 REPLACE 实际上并不是替换行

MySQL查询为什么我的INNER JOIN组日期结果

PHP/MYSQL排名代码导致PHP/MYSQL加载页面缓慢

python - 从 Pandas Dataframe 生成 SQL 语句

sql - 从 SQL 中的字符串中选择不同的最高级别目录