MySQL: ORDER BY с пустой датой «0000-00-00» в качестве последней, но остальные ASC - PullRequest
4 голосов
/ 17 февраля 2012

В нашей базе данных вместо создания пустых дат NULL они '0000-00-00' (я знаю, это отстой). Как я могу заказать их так, чтобы даты, которые не '0000-00-00', были сначала и были заказаны ASC, а затем следовали пустые даты '0000-00-00'?

Спасибо!

Ответы [ 4 ]

11 голосов
/ 17 февраля 2012
...
ORDER BY CASE WHEN YourDateColumn = '0000-00-00' THEN 2 ELSE 1 END,
         YourDateColumn
3 голосов
/ 17 февраля 2012

Попробуйте ниже:

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

ИЛИ

select * from your_table
order by if(date_column='0000-00-00',1,0),date_column;
1 голос
/ 17 февраля 2012
ORDER BY (DateColumn = 0)
       , DateColumn
1 голос
/ 17 февраля 2012

Вы можете использовать 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, ...
...