繁体   English   中英

如何在mysql中找到通用列的索引(id)

[英]how to find index ( id ) of generic column in mysql

我有一张桌子,上面有这个名字。

忙碌的猫

我正在写这样的查询

SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc

那么我如何获得第12位用户的评分指数? 感谢您的帮助。

假设“第十二个用户”是指ID为12的用户:

在MySQL 8.0+中,您可以使用dense_rank()

SELECT x.rating_index
       FROM (SELECT r.user_id,
                    dense_rank() OVER (ORDER BY sum(r.score) DESC) rating_index
                    FROM quiz_rashad.rating r
                    GROUP BY r.user_id) x
       WHERE x.user_id = 12;

编辑:

对于MySQL 5.7,您必须使用子查询来使总得分的唯一计数大于或等于ID为12的用户的总得分。

SELECT count(DISTINCT x.score) rating_index
       FROM (SELECT r.user_id,
                    sum(r.score) score
                    FROM quiz_rashad.rating r
                    GROUP BY r.user_id) x
       WHERE x.score >= (SELECT sum(r.score)
                                FROM quiz_rashad.rating r
                                WHERE r.user_id = 12)

我们可以在这里尝试使用LIMITOFFSET

SELECT user_id, SUM(score) AS score
FROM quiz_rashad.rating
GROUP BY user_id
ORDER BY score DESC
LIMIT 1 OFFSET 11;

该答案假设您真正想要的是第十二位的记录。 它还假定不会为相同的分数而捆绑两个用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM