根据分数创建独特的排名,然后用 MySQL 杀死
Create unique ranks based on score then kills with MySQL
我如何根据得分和击杀数给予我的玩家独特的排名? (MySQL)
我不想要但目前拥有的:
Rank | Name | Score | Kills
1 | Bob | 900 | 45
2 | Moby | 400 | 35
2 | Snake | 400 | 38
3 | Dick | 240 | 20
我想要但没有的:
Rank | Name | Score | Kills
1 | Bob | 900 | 45
2 | Snake | 400 | 38
3 | Moby | 400 | 35
4 | Dick | 240 | 20
另外当玩家有相同的得分和杀戮时,我仍然不希望他们有相同的等级,我有...你能帮忙吗,这是我使用的:
SELECT
FIND_IN_SET(score,(SELECT GROUP_CONCAT(score ORDER BY score DESC) FROM rankme)) rank,
T1.name,
T1.score,
T1.kills,
T1.deaths,
T2.credits,
T1.connected
FROM
rankme T1
LEFT JOIN
store_players T2
ON
T1.name = T2.name
ORDER BY
T1.score DESC
编辑:我尝试了 ORDER BY T1.score, T1.kills 并且它确实通过移动杀戮最多的玩家来工作,但它仍然为两个玩家提供相同的排名。你如何解决这个问题?
一个选项使用相关子查询:
SELECT *
FROM
(
SELECT
1 + (SELECT COUNT(*) FROM rankme t2
WHERE t2.score > t1.score OR
(t2.score = t1.score AND t2.kills > t1.kills)) Rank,
name,
score,
kills
FROM rankme t1
) t
ORDER BY Rank;
请注意,此查询仍有一个缺点:如果两个人的得分和击杀数完全相同,那么我们仍然会得到重复的排名。如果您担心这一点,请告诉我们您想如何打破平局。
我如何根据得分和击杀数给予我的玩家独特的排名? (MySQL)
我不想要但目前拥有的:
Rank | Name | Score | Kills
1 | Bob | 900 | 45
2 | Moby | 400 | 35
2 | Snake | 400 | 38
3 | Dick | 240 | 20
我想要但没有的:
Rank | Name | Score | Kills
1 | Bob | 900 | 45
2 | Snake | 400 | 38
3 | Moby | 400 | 35
4 | Dick | 240 | 20
另外当玩家有相同的得分和杀戮时,我仍然不希望他们有相同的等级,我有...你能帮忙吗,这是我使用的:
SELECT
FIND_IN_SET(score,(SELECT GROUP_CONCAT(score ORDER BY score DESC) FROM rankme)) rank,
T1.name,
T1.score,
T1.kills,
T1.deaths,
T2.credits,
T1.connected
FROM
rankme T1
LEFT JOIN
store_players T2
ON
T1.name = T2.name
ORDER BY
T1.score DESC
编辑:我尝试了 ORDER BY T1.score, T1.kills 并且它确实通过移动杀戮最多的玩家来工作,但它仍然为两个玩家提供相同的排名。你如何解决这个问题?
一个选项使用相关子查询:
SELECT *
FROM
(
SELECT
1 + (SELECT COUNT(*) FROM rankme t2
WHERE t2.score > t1.score OR
(t2.score = t1.score AND t2.kills > t1.kills)) Rank,
name,
score,
kills
FROM rankme t1
) t
ORDER BY Rank;
请注意,此查询仍有一个缺点:如果两个人的得分和击杀数完全相同,那么我们仍然会得到重复的排名。如果您担心这一点,请告诉我们您想如何打破平局。