我有这个结构
| start_at
----------------------
record1 | 2016-01-20
record2 | 2016-01-15
record3 | 2016-01-22
record4 | 2016-01-10
可以说当前日期是2016年1月19日
我想首先获取具有大于当前日期的start_at的记录,并按start_at ASC对其进行排序.
然后,我想获取具有start_at小于当前日期的记录,并按start_at DESC对其进行排序.
所以结果应该是这样的:
| start_at
----------------------
record1 | 2016-01-20
record3 | 2016-01-22
record2 | 2016-01-15
record4 | 2016-01-10
我怎样才能做到这一点?
我尝试这样做,但没有成功:
ORDER BY start_at> = NOW()ASC,start_at
最佳答案
您已关闭,使用以下命令的多个键:
ORDER BY (start_at >= NOW()) desc,
(case when start_at >= NOW() then start_at end) asc,
(case when start_at < NOW() then start_at end) desc
第一个条件将未来日期放在首位.怎么样?表达式start_at> = NOW()返回一个布尔值.真值是“ 1”,假值是“ 0”,因此,以降序表示,但将来的值优先.其他两个键处理每个组中的顺序.