我正在使用Mysql和PHP。我需要根据到期日期对结果进行排序。未过期的结果首先按升序排列,最后过期的按降序排列。
我正在使用以下查询:
SELECT * FROM `artist` WHERE L_Name
例如,考虑以下值:
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
如何使用MySQL和PHP有效地实现这一目标?
答案 0 :(得分:3)
您可以向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