获得包括领带在内的前N个结果

时间:2017-10-31 18:50:41

标签: mysql

我正在一个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)

当新球员进入联盟并且我不想重新计算每个球员的计算时,最高x%将无效。

1 个答案:

答案 0 :(得分:2)

我不知道您的表格结构,因此我将在此处做出一些假设,因此请根据需要调整表格和列名称。

第一步是获得前3名:

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