MySQL Group By - 前 3 行和第 n 行

标签 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      |
+------+--------+--------+

这是我可以在单个查询中完成的事情吗?

任何帮助表示赞赏 提前致谢!

最佳答案

剧透警告;)

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

关于MySQL Group By - 前 3 行和第 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45467011/

相关文章:

sql - PostgreSQL 查询按两个分组 "parameters"

mysql - 在mysql中更改时间戳

sql - 如何在 Oracle 中对 CLOB 列使用 GROUP BY?

MySQL - 在某些行上选择 AVG,在所有行上选择 SUM

MySQL 通过特殊 ID 搜索

php - MySQL-获取组的 sum()

mysql - 获取项目的最后状态

mysql - 在MongoDB中,如何查询类似于Twitter的内容?

php - MySQL 不会永远使用

php - 如何根据php中的下拉选择动态获取文本字段中的内容