我只是无法想象如何在SQL代码中完成此操作,但我认为这是可能的.
我有以下记录:
ID | NAME | REGDATE
1 sam 2017-08-12
2 gab 2017-08-13
3 mab 2017-08-19
4 mab 2017-08-20
5 don 2017-08-18
6 kob 2017-08-14
7 mol 2017-08-15
现在,我要像上面这样对行进行排序:
ID | NAME | REGDATE
5 don 2017-08-18
3 mab 2017-08-19
4 mab 2017-08-20
7 mol 2017-08-15
6 kob 2017-08-14
2 gab 2017-08-13
1 sam 2017-08-12
我想要的是将行排序为最近的日期(即2017-08-18),并将过去具有regdate的行放在结果集的末尾,您可以在上面看到.
在SQL中怎么可能?
我找不到合适的术语,该如何在搜索引擎中搜索答案.我所知道的就是使用order by就是这样.
解决方法:
您可以通过以下方式对订单使用多个键来执行此操作:
order by ( regdate >= curdate() ) desc, -- put current and future first
(case when regdate >= curdate() then regdate end) asc,
regdate desc
严格来说,第一个条件不是必需的.但是,我认为这使逻辑更清晰.