【发布时间】:2019-10-18 15:10:17
【问题描述】:
我需要做一个涵盖一些情况的 sql 命令...
我首先需要按列到期(纪元字符串)排序,该列大于现在或为空(未到期)。
所以过期的记录(过期时间小于现在的)总是在未过期的记录之后。
然后,在每种情况下,都需要按字母顺序进行二次搜索。
t表 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
【问题讨论】:
-
expiry > 1571410101,expiry = ' '是expiry列数据类型是INT数据类型,或字符串 (CHAR/VARCHAR) 数据类型.. 数据类型的使用在这里混合接缝奇怪。 . -
运行
SHOW CREATE TABLE tTABLE... 并参见 Why should I provide a Minimal Reproducible Example for a very simple SQL query? -
删除第二个
CASE关键字。见CASE Syntax
标签: mysql sql sql-order-by case-when