mysql查询找到最高分并使用DISTINCT

时间:2016-01-14 06:31:54

标签: php mysql

我的桌子是

+--------+------+-------+
| userId | tid  | score |
+--------+------+-------+
|  1     | 1    | 850   |
|  1     | 1    | 750   |
|  2     | 1    | 890   |
|  2     | 1    | 750   |
|  3     | 2    | 500   |
|  3     | 1    | 720   |
+--------+------+-------+

我需要在此表中为3个最高分给3个奖项。同样的用户不需要其他地方。我需要获取tid = 1的最高分。将DISTINCT用于userID。我该怎么办..

3 个答案:

答案 0 :(得分:2)

您可以简单地按userId分组以获得每个用户的结果,并按MAX(分数)降序排序;由于您按userId进行分组,因此您将获得具有最高分数的用户列表;

SELECT userid, MAX(score) score 
FROM scores
GROUP BY userid
ORDER BY MAX(score) DESC;

An SQLfiddle to test with

答案 1 :(得分:1)

试试这个。它将返回所有具有最大值降序的用户ID(从最高到最低)

SELECT userId, MAX(score) FROM table
GROUP BY userId ORDER BY MAX(score) DESC

答案 2 :(得分:1)

您可以使用以下查询。

选择不同的userId FROM得分,其中tId = 1,按得分desc排序 限制3;