我有一张如下表格。选择顺序需要从现在开始显示最接近的发布日期(更紧急),然后发布日期desc。说当前日期是17-11-2017
tblProduct
01-02-2016
09-05-2015
03-11-2017
30-11-2017
02-01-2018
09-06-2018
输出顺序应为
30-11-2017
02-01-2018
09-06-2018
03-11-2017
09-05-2015
01-02-2016
前2名在3个月内,所以首先显示(在2个结果之间,30-11-2017离现在更近,所以首先显示)。
什么是mysql查询?
答案 0 :(得分:1)
我肯定不是最优雅的方式,但这可以帮到你
http://sqlfiddle.com/#!9/2a6eca/1
SELECT *, IF(mydate BETWEEN NOW() AND DATE_ADD( NOW() , INTERVAL +3 MONTH) , 1, 0) as `dateInRange`
FROM `demo`
ORDER BY `dateInRange` DESC,
CASE WHEN `dateInRange` = 1 THEN `mydate` END ASC,
CASE WHEN `dateInRange` = 0 THEN `mydate` END DESC
这样做会在选择中添加另一列dateInRange
(如果日期介于现在和现在的3个monts之间,则将其设置为1.
然后按部分顺序我们首先按此列排序(确保3个月范围内的所有日期都在顶部),当此列等于0时,我们按实际日期排序上升。如果此列为0,则按日期降序排序。 这段代码可以满足您的需求,但必须有一种更优雅的方式来实现这一目标。