MySQL按两列排序(现在和之前和之后)

时间:2013-03-15 16:42:13

标签: mysql sorting sql-order-by

如果我有两个列:

number | vip_date 
22     | 22.03.2013
32     | 12.01.2013
38     | NULL
44     | 06.01.2013
20     | 30.03.2013
10     | NULL

我想按数字和日期排序,所以我会做... ORDER BY number DESC, vip_date DESC

结果按日期排序,带有NULL日期的2行按编号排序。 问题是,如何按NOW()之后的日期和按NOW()之前的数字日期排序?

1 个答案:

答案 0 :(得分:0)

您可以比较该行是否为null,并在此之后进行排序:

ORDER BY number DESC, (vip_date IS NULL) ASC, vip_date DESC
如果行(vip_date IS NULL)

1将为NULL,如果不是0则为{{1}}。因此,0在1之前(这就是我们对升序进行排序的原因)。