mySql 排名排序从-到

标签 mysql sql database sorting

我有一张这样的 table :

users :

   | username |              statistics              |
   ----------- ---------------------------------------
0  | peter200 | { "gamesWon": 4, "gamesPlayed" : 4}  | 
1  | eminem33 | { "gamesWon": 7, "gamesPlayed" : 20} | 

注意:(statistics = "JSON")

我想创建一个排名列表。

因此statistics. gamesWon中编号最大的用户获得排名 numero uno 1等等。

到目前为止,我得到的是这样的东西(完全像我希望的那样工作):

SELECT username, statistics, @rank := @rank + 1 AS rank 
FROM users, (SELECT @rank := 0) r 
WHERE JSON_EXTRACT(statistics, '$.gamesWon') 
ORDER BY JSON_EXTRACT(statistics, '$.gamesWon') DESC

关于我的问题:现在我想更新上面的查询以获取特定排名索引中的信息(比如说从排名 2 到排名 10) .

添加AND rank > 2 AND rank < 10WHERE clause似乎不是一个可行的解决方案。因此,我们将不胜感激任何帮助。

最佳答案

你需要用子查询包装它:

SELECT *
FROM (SELECT username, statistics, @rank := @rank + 1 AS rank 
      FROM users, (SELECT @rank := 0) r 
      WHERE JSON_EXTRACT(statistics, '$.gamesWon')
      ORDER BY JSON_EXTRACT(statistics, '$.gamesWon') DESC
     ) s
WHERE  rank > 2 AND rank < 10

关于mySql 排名排序从-到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800968/

相关文章:

sql - 如果未找到行,QueryRow().Scan() 将返回错误。怎么解决?

android 检查表是否为空

mysql - 我需要编写什么索引来防止在性能不佳的 MySQL 查询中进行表排序?

mysql - 符合增量同步条件的数据库模式

php - 编写更好的代码/查询

MySQL:在表列和 group_concat 中使用逗号分隔的 id

mysql - SQL : return percentage without decimal place

php - 计算树中子级类别的值,并应用于 PHP 或 MYSQL 中的所有父级

mysql - 在使用别名的 having 子句中使用子查询

mysql - 多对多关系与级联或设置空删除?