Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 SQL查询未返回不同的值_Mysql_Sql_Distinct - Fatal编程技术网

Mysql SQL查询未返回不同的值

Mysql SQL查询未返回不同的值,mysql,sql,distinct,Mysql,Sql,Distinct,我有一个由500行数据组成的游戏排行榜,我写了一个脚本来返回数据,没有重复的分数。然而,我得到了重复的分数返回给我。这是我的剧本 SELECT DISTINCT username, score, FIND_IN_SET(score, (SELECT DISTINCT GROUP_CONCAT(score ORDER BY score DESC) FROM TPS_STATS)) AS rank FROM TPS_ST

我有一个由500行数据组成的游戏排行榜,我写了一个脚本来返回数据,没有重复的分数。然而,我得到了重复的分数返回给我。这是我的剧本

SELECT DISTINCT 
    username, score, 
    FIND_IN_SET(score, (SELECT DISTINCT GROUP_CONCAT(score ORDER BY score DESC) 
                        FROM TPS_STATS)) AS rank
FROM 
    TPS_STATS 
ORDER BY
    rank ASC
LIMIT 100;
我看到的重复结果的一个例子是以图像的形式发布的


如果您的MySql版本为8.0,则可以使用row_number:

SELECT 
  username, 
  score, 
  row_number() OVER (ORDER BY score desc, username) rn 
FROM TPS_STATS 
ORDER BY score desc, username 
LIMIT 100
看。 如果较低:

select 
  username,
  score,
  (select count(*) from TPS_STATS where score > t.score) +
  (select count(*) from TPS_STATS where score = t.score and username < t.username) + 1
  rank
from TPS_STATS t
order by rank, username
limit 100

请参见

没有重复项。每一行都不同于另一行。不同的用户名、分数。。。返回这些列的不同行,而不是不同列。你能发布你的预期输出吗?我希望它不会选择具有相同分数的行,因为如果它像这里一样,那么排名将无法区分具有相同结果的两个用户。然后说对于排名=1,将选择哪个用户名?你确实想要用户名,不是吗?那么这就是你需要的结果。所有的用户都是通过他们的分数排名的。你能发布这个期望的结果吗?