我正在从我对 MySQL 数据库的查询中寻找一种特殊的要求,我想以不同的方式应用order by。例如,在带有字段user_id和user_rating和user_department的数据库中,带有以下数据。
+------------------------------------------------------+
| user_id | user_rating | user_department |
+------------------------------------------------------+
| 1 | 102 | A |
| 2 | 33 | B |
| 3 | 43 | C |
| 4 | 54 | A |
| 5 | 63 | A |
| 6 | 214 | B |
| 7 | 82 | A |
| 8 | 87 | C |
| 9 | 43 | A |
| 10 | 98 | A |
| 11 | 73 | C |
| 12 | 31 | A |
+------------------------------------------------------+
鉴于上述结构,我想按每个用户部门的用户评级顺序对结果进行排序,并且我需要每个用户部门最多 5 条记录,其中初始 3 条记录应按其评级顺序排列,但其余 2 条记录应是随机的。
因此,在上述情况下,输出将类似于:
+------------------------------------------------------+
| user_id | user_rating | user_department |
+------------------------------------------------------+
| 1 | 102 | A |
| 10 | 98 | A |
| 7 | 82 | A |
| 12 | 31 | A |
| 5 | 63 | A |
| 6 | 214 | B |
| 2 | 33 | B |
| 8 | 87 | C |
| 11 | 73 | C |
| 3 | 43 | C |
+------------------------------------------------------+
我尝试了通过网络提供的自定义订单选项,例如使用 FIELD 功能,但在这里找不到那么有用。还尝试使用子查询来解决它,但该选项看起来也不可行,因为 MySql 不允许我在查询中同时使用 IN 和 LIMIT 关键字。
有没有更好/更简单的方法来解决这个问题。