我正在努力获得有关系的分数排名 - 但不会跳过排名"SELECT * FROM $Table WHERE Score > 0 ORDER BY Score LIMIT $Count OFFSET $Offset"
我们的数据库查询的第一个版本很简单:
"SELECT UID, Name, Score, Rank, (SELECT COUNT(*) FROM $Table t2 WHERE t2.Score < t1.Score AND Score > 0) +1 AS Rank FROM $Table t1 WHERE Score > 0 ORDER BY Rank LIMIT $Count OFFSET $Offset"
然后我得到了a1ex07版本:
// pseudo code; get user
@RequestMapping("/users/{id}")
public String show(Model model, @PathVariable("id") Long id) {
User user = repository.findById(id);
model.addAttribute("user", user);
// the url will be /users/1
// now do something to add ?include-posts=true
// I can't use redirect here
return "show";
}
但是有空间......
我最相关的结果:
我希望有人可以帮助我;
MySQL(i)10.1.10-MariaDB
答案 0 :(得分:0)
要在mysql中实现排名,可以使用会话变量:
SELECT tmp.UID,
tmp.Name,
@rnk := IF(@score = tmp.Score, @rnk, @rnk+1) AS Rank,
@score := tmp.Score as Score
FROM (
SELECT *
FROM $Table,
(SELECT @rnk := 0, @score = NULL) AS init
ORDER BY Score DESC
) AS tmp
子查询按分数对数据进行排序并初始化变量。主查询将当前行的得分与前一行的得分进行比较,确定等级