mysql - 按具有重复值的 CASE 排序
问题描述
我有一个数据库表“tbl_matches”
NAME START_DATE STATUS
John 2018-08-1 08:30 Prematch
Paul 2018-08-1 05:30 Prematch
Sam 2018-08-1 05:30 Prematch
Mel 2018-08-1 05:30 Live
这是我的查询
SELECT * FROM tbl_matches
ORDER BY CASE WHEN STATUS = 'Live' THEN true ELSE NULL DESC
我想要的是将“Mel”记录移到Paul 上方,就在 Paul 和 John 之间,因为 Mel 状态具有Live并且它与 Paul 和 Sam 具有相同的日期和时间。
逻辑应该是:如果状态为“实时”,则将记录移到其他记录上方具有相同的“日期和时间”。
解决方案
尝试:
SELECT * FROM tbl_matches
ORDER BY START_DATE, CASE WHEN STATUS ='Live' THEN '0' ELSE '1' END;
CASE
将分配值0
where Status
is Live否则将分配1
。然后ORDER BY
会Ascending
默认排序
推荐阅读
- node.js - Nodejs Github API:您的浏览器做了一些意外的编辑问题消息
- scala - Spark Scala UDF NullPointer 异常
- parsing - 问:你如何解析出一个可能有单词空间单词组合的单词?
- c# - WinForms选项卡控件导致跨线程操作
- python - cx_Oracle.NotSupportedError:不支持 NAType 类型的 Python 值
- r - 如何使用正态分布来计算一个玩家在游戏中比另一个玩家得分更多的概率?
- javascript - css - 单击显示更多按钮时如何使用缓入
- c# - SQL 数据库 If-Else 语句
- python - 无法在 AWS Lambda 上找到 Xvfb
- html - 单选按钮在 iOs 中看起来是方形的