MySQL:ORDER BY与空日期'0000-00-00'作为最后一个,但其余的ASC

时间:2012-02-16 21:45:03

标签: mysql sql-order-by

在我们的数据库中,它们不是空日NULL,而是'0000-00-00'(我知道,它很糟糕)。我如何订购这些,以便非'0000-00-00'的日期首先并订购ASC,然后'0000-00-00'的空日期会在之后?

谢谢!

4 个答案:

答案 0 :(得分:11)

...
ORDER BY CASE WHEN YourDateColumn = '0000-00-00' THEN 2 ELSE 1 END,
         YourDateColumn

答案 1 :(得分:3)

尝试下面的内容:

  SELECT * FROM your_table ORDER BY (date_column='0000-00-00'), date_column ASC

OR

select * from your_table
order by if(date_column='0000-00-00',1,0),date_column;

答案 2 :(得分:1)

您可以使用CASE WHEN http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

... ORDER BY (CASE WHEN date = '0000-00-00' THEN 1 ELSE 0 END) ASC, otherColumns asc, ...

答案 3 :(得分:1)

ORDER BY (DateColumn = 0)
       , DateColumn