我正在使用Mysql和PHP。我需要根据到期日期对结果进行排序。未过期的结果首先以升序排列,最后过期的结果以降序排列。
我正在使用以下查询:
SELECT * FROM `promos` ORDER BY `expire_date` ASC LIMIT 0,10
例如,考虑以下值:
ID expire_date
1 2020-05-07 03:30:00
2 2020-05-03 17:00:00
3 2020-04-28 23:30:00
4 2020-05-12 09:00:00
5 2020-03-29 12:00:00
6 2020-04-17 15:00:00
我需要获得以下命令:
ID expire_date
2 2020-05-03 17:00:00 / ASC
1 2020-05-07 03:30:00 / ASC
4 2020-05-12 09:00:00 / ASC
3 2020-04-28 23:30:00 / DESC EXPIRED
6 2020-04-17 15:00:00 / DESC EXPIRED
5 2020-03-29 12:00:00 / DESC EXPIRED
如何使用MySQL和PHP有效地实现这一目标?
您可以在您的条件表达式中添加一个条件表达式,ORDER BY
当条件expire_date
传递时返回1 0
;否则,这将导致过期的值在末尾排序:
SELECT *
FROM `promos`
ORDER BY `expire_date` < CURDATE(), `expire_date` ASC
LIMIT 0,10
要对过期日期进行降序排序,您需要先按expire_date
升序排序(如果未过期),然后再expire_date
降序排序:
SELECT *
FROM `promos`
ORDER BY CASE WHEN `expire_date` >= CURDATE() THEN `expire_date`
ELSE '9999-99-99'
END ASC,
`expire_date` DESC
LIMIT 0,10
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句