我的桌子是
+--------+------+-------+
| 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。我该怎么办..
答案 0 :(得分:2)
您可以简单地按userId分组以获得每个用户的结果,并按MAX(分数)降序排序;由于您按userId进行分组,因此您将获得具有最高分数的用户列表;
SELECT userid, MAX(score) score
FROM scores
GROUP BY userid
ORDER BY MAX(score) DESC;
答案 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;