首页 > 解决方案 > 按具有重复值的 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 具有相同的日期和时间。

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

标签: mysqlsql

解决方案


尝试:

SELECT * FROM tbl_matches
ORDER BY START_DATE, CASE WHEN STATUS ='Live' THEN '0' ELSE '1' END;

CASE将分配值0where Statusis Live否则将分配1。然后ORDER BYAscending默认排序


推荐阅读