如何在mysql中按特定值对结果排序

tyu7yeag  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(291)

我们有一个数据库叫做transaction。是的 user_id , date , value 等等。我在查询中也使用分页。我的表中有数千条用户id等于的记录 2 或其他价值。把用户id=2放在最后一页。我想对结果进行如下排序:
按日期对结果排序,但如果用户id=2,则将与用户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
wecizke3

wecizke31#

你可以尝试使用 CASE 你的表情 ORDER BY 条款:

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

我不确定你是想让每组按日期升序还是降序排序。如果需要升序日期顺序,请删除 DESC 关键字。

相关问题