Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中查找泛型列的索引(id)_Mysql_Sql - Fatal编程技术网

如何在mysql中查找泛型列的索引(id)

如何在mysql中查找泛型列的索引(id),mysql,sql,Mysql,Sql,我有一个名称评级如下的表 我是这样写这个问题的 SELECT user_id, sum(score) as score FROM quiz_rashad.rating group by user_id order by score desc 那么我如何获得第12位用户的评级指数呢? 谢谢您的帮助。我们可以尝试将限制与偏移一起使用,如下所示: SELECT user_id, SUM(score) AS score FROM quiz_rashad.rating GROUP BY user_id

我有一个名称评级如下的表

我是这样写这个问题的

SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc
那么我如何获得第12位用户的评级指数呢?
谢谢您的帮助。

我们可以尝试将
限制
偏移
一起使用,如下所示:

SELECT user_id, SUM(score) AS score
FROM quiz_rashad.rating
GROUP BY user_id
ORDER BY score DESC
LIMIT 1 OFFSET 11;
这个答案假设你真正想要的是第十二位的记录。它还假设不会有两个用户因相同的分数而并列。

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

在MySQL 8.0+中,您可以使用
densite\u rank()


编辑:

对于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)

你在用什么?SQL-Server还是MYSQL?我使用的是MYSQL版本8什么版本的MYSQL?我是唯一一个什么都不懂的人吗?评级指数??你是说排名对吗?@TimBiegeleisen:据我所知,他们希望排名高于用户。用户的总分越高,其排名就越高。总分是表中各个分数的总和。内部
SELECT
计算所有用户的排名。现在的问题是:ID为12的用户的排名是什么?也就是说,为ID为12的用户查询内部
选择
。但这是最好的猜测。我的理解可能也错了。对不起,我的mysql版本是5.7
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)