mysql-按最接近指定日期的顺序对行进行排序,但将过去的记录放到结果集的末尾

我只是无法想象如何在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

严格来说,第一个条件不是必需的.但是,我认为这使逻辑更清晰.

上一篇:javascript-按字母顺序对嵌套的div排序


下一篇:java-我可以使用double for循环对列表进行排序吗?