mysql - 如何按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
解决方案
您可以尝试在子句中使用CASE
表达式:ORDER BY
SELECT *
FROM yourTable
ORDER BY
CASE WHEN user_id = 2 THEN 1 ELSE 0 END,
date DESC;
我不确定您是否希望每个组按日期升序或降序排序。如果您想要升序日期顺序,请DESC
在我的查询末尾删除关键字。
推荐阅读
- c++ - 如何使用 *pointer 从函数中获取第二个值?
- python - 我试图在同一个项目中为第二个应用程序使用基于类的视图,但是,更改没有通过?
- path - env.var 时在 Windows 10 的运行功能中启动了错误的文件。路径包含多个名称相似的文件
- python - Apache Airflow:如何动态触发多个 DAG?
- flutter - 在 Flutter 中添加 flutter_facebook_login 时出现 MissingPluginException
- typescript - Google Chrome 扩展程序 - 弹出窗口未显示且无法检查背景页面
- javascript - 使用 Router 的组件未显示在 Button 单击事件上
- git - 如何从 gitolite 获取远程存储库列表?
- scala - 在播放框架中的对象内调用 WSClient 的 Scala 类方法
- python - Scikit-learn 扩展的自定义 one-hot 编码矩阵 - 不是从数据集构建的