我们有一个叫做交易的数据库。它有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
答案 0 :(得分:1)
您可以尝试在CASE
子句中使用ORDER BY
表达式:
SELECT *
FROM yourTable
ORDER BY
CASE WHEN user_id = 2 THEN 1 ELSE 0 END,
date DESC;
我不确定您是否希望每个组按日期升序或降序排序。如果您想要升序日期顺序,请在查询结尾处删除DESC
关键字。