按CASE订购具有重复值

时间:2018-08-20 03:18:52

标签: mysql sql database mysqli

我有一个数据库表“ 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

我想在保罗和约翰之间将“梅尔”记录移至保罗上,因为梅尔的状态为实时,并且相同保罗和萨姆的日期和时间

逻辑应为:如果状态为“实时”,则将记录移至其他具有相同“日期和时间”的记录上方。

2 个答案:

答案 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