我需要做一个涵盖了几种情况的sql命令...
我首先需要按列到期时间(纪元字符串)进行排序,该字段大于现在或为空(未到期)。
因此,过期的记录(那些过期时间少于现在的记录)将始终在未过期的记录之后。
然后,在每种情况下,都需要按字母顺序进行第二次搜索。
表格
ID
名称
到期
活性
到目前为止我的尝试
select * from `tTABLE` WHERE `active`='1'
ORDER BY
CASE WHEN `expiry` > 1571410101 THEN 1
CASE WHEN `expiry` = '' THEN 2 ELSE 3 END,`expiry`
DESC
最佳答案
我想你要:
SELECT t.*
FROM `tTABLE` t
WHERE active = 1
ORDER BY (CASE WHEN expiry > unixtime()
THEN 1 -- explicit future expires first
WHEN expiry IS NULL
THEN 2 -- no expires second
ELSE 3
END),
name;