MySQL Group By - 前3行和第n行

时间:2017-08-02 17:07:36

标签: mysql group-by

我有一个像这样的MySQL表:

+------+--------+--------+
| ID   | UserID | Score  |
+------+--------+--------+
| 1    | 3      | 12     |
| 2    | 3      | 11     |
| 3    | 3      | 12     |
| 4    | 2      | 14     |
| 5    | 4      | 8      |
| 6    | 2      | 13     |
+------+--------+--------+

由此我希望从整个表中获得前3个分数,并从特定用户中获得最高分

+------+--------+--------+
| ID   | UserID | Score  |
+------+--------+--------+
| 4    | 2      | 14     |
| 6    | 2      | 13     |
| 3    | 3      | 12     |
| 5    | 4      | 8      |
+------+--------+--------+

这是我可以在一个查询中完成的吗?

感谢任何帮助 提前谢谢!

2 个答案:

答案 0 :(得分:1)

对于“单个查询”的某些定义,请确定...如果您愿意使用子查询或联合。

最佳性能可能来自两个查询,但如果您愿意,可以将它们加入UNION以方便使用。

答案 1 :(得分:1)

扰流警报;)

(SELECT * FROM tableA ORDER BY score DESC LIMIT 3)
UNION
(SELECT * FROM tableB WHERE UserID = 4 ORDER BY score DESC LIMIT 1);