如何按mysql中的特定值对结果进行排序

时间:2018-06-19 06:08:58

标签: mysql

我们有一个叫做交易的数据库。它有user_iddatevalue等等。我也在查询中使用分页。我的表中有成千上万的记录,其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

1 个答案:

答案 0 :(得分:1)

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

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

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