首页 > 解决方案 > 如何按mysql中的特定值对结果进行排序

问题描述

我们有一个名为事务的数据库。它有user_id, date,value等等。我也在查询中使用分页。我的表中有数千条记录,其 user_id 等于2或其他值。将 user_id = 2 放在最后一页。我想像这样对结果进行排序:

按日期对结果进行排序,但如果 user_id= 2 ,则将与 user_id= 2 关联的所有结果放在最后。为了更清楚,我在下面向您展示了我想要的东西。

-------------------------------------
| ID | user_id |    date    | ......
-------------------------------------
| 1  | 10      | 2018-10-20 |
-------------------------------------
| 2  | 11      | 2018-10-21 |
-------------------------------------
| 3  | 2       | 2018-10-22 |
-------------------------------------
| 4  | 2       | 2018-10-23 |

结果必须是这样的:

第一个:ID = 2,第二个:ID = 1,第三个:ID = 4,最后一个:ID = 3

提示 *:我使用字段功能,但不幸的是徒劳无功。

ORDER BY FIELD(user_id, 2) DESC, date DESC

标签: mysql

解决方案


您可以尝试在子句中使用CASE表达式:ORDER BY

SELECT *
FROM yourTable
ORDER BY
    CASE WHEN user_id = 2 THEN 1 ELSE 0 END,
    date DESC;

我不确定您是否希望每个组按日期升序或降序排序。如果您想要升序日期顺序,请DESC在我的查询末尾删除关键字。


推荐阅读