MySQL按IF和排序日期排序

MySQL按IF和排序日期排序,mysql,sorting,Mysql,Sorting,在MySQL中按日期排序时,我尝试一次性将ASC排序为今天之后的日期,DESC排序为今天之前的日期 我正在做类似的事情: SELECT * FROM test ORDER BY IF(created >= NOW(), created, 1) ASC, created DESC 这给了我一个想要的结果: ID CREATED 8 May, 10 2014 11:15:00+0000 7 May, 03 2014 20:47:00+0000 5 May, 02 2014 14

在MySQL中按日期排序时,我尝试一次性将ASC排序为今天之后的日期,DESC排序为今天之前的日期

我正在做类似的事情:

SELECT * FROM test ORDER BY IF(created >= NOW(), created, 1) ASC, created DESC
这给了我一个想要的结果:

ID  CREATED
8   May, 10 2014 11:15:00+0000
7   May, 03 2014 20:47:00+0000
5   May, 02 2014 14:00:00+0000
4   April, 30 2014 17:41:00+0000
3   April, 30 2014 17:00:00+0000
1   April, 21 2014 03:30:00+0000
6   March, 23 2014 12:00:00+0000
9   May, 20 2014 20:45:00+0000
10  July, 02 2014 20:30:00+0000
2   June, 30 2015 11:16:00+0000
今天之前是DESC,今天之后是ASC。但是,我想在结果的顶部看到ID的9,10,2块

任何关于如何做到这一点的想法都将不胜感激


测试链接:

向order by添加一个附加条件,该条件是日期是过去还是未来的二进制指示器:

SELECT *
FROM test 
ORDER BY (created >= NOW()) desc,
         IF(created >= NOW(), created, NULL) ASC,
         created DESC;

将其拆分为两个sql查询,然后合并结果如何

(SELECT * FROM test WHERE created >= NOW() ORDER BY created ASC)
UNION 
(SELECT * FROM test WHERE created < NOW() ORDER BY created DESC)

上面的9,10,2有什么特别的逻辑吗?因为它们是在今天之后。只是为了订货。这是为活动准备的。我想显示的是早晚发生的事情,但也要显示过去发生的事情,从最近传递到最早。联合的结果不符合子查询中的顺序。工会的结果似乎都是一样的,但没有保证。