作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉发布另一个关于 mysql 排名的问题,但我已经看过的所有问题和答案都没有帮助我....
我有用户点的 mysql 表。用户可以获得更多结果。我的目标是从用户及其排名中获得最大结果。
CREATE TABLE results
(`user_id` int, `points` int);
INSERT INTO results VALUES
(1,10),
(2,20),
(3,20),
(4,30),
(4,60),
(5,5),
(1,80);
所以上面的解决方案是:
rank | user_id | points
1 1 80
2 4 60
3 3 20
3 2 20
4 5 5
最佳答案
下面的查询就可以了:
SET @rank=0;
SET @points=0;
SELECT @rank := IF(@points = a.points, @rank, @rank + 1) AS rank, a.user_id, @points := a.points AS points
FROM (
SELECT user_id, MAX(points) as points
FROM results
GROUP BY user_id
) a
ORDER BY a.points DESC;
我还为它创建了一个 SQLFiddle,因此您可以看到它的工作原理:http://sqlfiddle.com/#!2/7ba2f/12
关于mysql从结果中排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933660/
我是一名优秀的程序员,十分优秀!