Mysql SQL查询未返回不同的值
我有一个由500行数据组成的游戏排行榜,我写了一个脚本来返回数据,没有重复的分数。然而,我得到了重复的分数返回给我。这是我的剧本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
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,将选择哪个用户名?你确实想要用户名,不是吗?那么这就是你需要的结果。所有的用户都是通过他们的分数排名的。你能发布这个期望的结果吗?