我有一个数据库表“ 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
我想在保罗和约翰之间将“梅尔”记录移至保罗上,因为梅尔的状态为实时,并且相同保罗和萨姆的日期和时间。
逻辑应为:如果状态为“实时”,则将记录移至其他具有相同“日期和时间”的记录上方。
答案 0 :(得分:2)
尝试:
SELECT * FROM tbl_matches
ORDER BY START_DATE, CASE WHEN STATUS ='Live' THEN '0' ELSE '1' END;
CASE
将分配值0
,其中Status
是 Live ,否则它将分配1
。然后ORDER BY
会默认按照Ascending
的顺序对其进行排序
答案 1 :(得分:2)
只需在状态列中使用case when
,并将START_DATE放在by子句中
SELECT * FROM tbl_matches
order by START_DATE,case when status ='Live' then 0 else 1 end