我在一个rec联盟的网站上工作,希望能列出不同类别的最佳射手。这很简单,但是如果我要进入一个类别的前五名,并且有第一和第二名,但是第三名是三方平手,有没有办法证明这一点呢?
Ex:
Top 3 in Points
1 - Player A (10 pts)
2 – Player B (9 pts)
T3 – Player C (8 pts)
T3 – Player D (8 pts)
T3 – Player E (8 pts)
前百分之十也不会工作,因为新球员进入联盟,我宁愿不必重新计算每个球员的增加。
最佳答案
我不知道您的表结构,所以我将在这里做一些假设,因此根据需要调整表和列名。
第一步是获得前三名:
SELECT DISTINCT
`score`
FROM
`points`
LIMIT 3
然后让所有有这些分数的人,把它们放在一起得到:
SELECT
`name`, -- Whichever fields you have
`score`
FROM
`points`
WHERE
`score` IN (
SELECT DISTINCT
`score`
FROM
`points`
LIMIT 3
)
ORDER BY
`points` DESC, -- Sort highest score first
`name` ASC; -- When tied, sort alphabetically
关于mysql - 获得包括领带在内的前N个结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47042636/