PHP, MYSQL: упорядочить по дате, но пустые даты не последним

Я получаю массив с заголовками todo и соответствующими датами из MySQL. Я хочу заказать его по дате и иметь самый старый на вершине. Но есть некоторые todos без даты. Эти топы, которые я не хочу показывать на первых позициях, а в нижней части списка. К сожалению, MySQL сначала поставил пустые.

Есть ли способ сделать это в одном запросе (нельзя использовать MySQLi, используя ActiveRecord CI). Я мог бы выполнить второй запрос для всех todos без дат и поместить их внизу. Но я хотел бы сделать это в одном запросе – если возможно?

Related of "PHP, MYSQL: упорядочить по дате, но пустые даты не последним"

Вы можете сделать это в MySQL с предложением ORDER BY . Сначала сначала NULL , затем дату.

 SELECT * FROM your_table ORDER BY (date_column IS NULL), date_column ASC 

Примечание. Предполагается, что строки без даты имеют NULL .

да

 SELECT * FROM table ORDER BY CASE your_date WHEN '' THEN 'b' ELSE 'a' END, date ASC 

возможно, добавьте NVL( thedate, to_date('2099-12-31','yyyy-mm-dd')) в порядке по порядку

Вы можете использовать это:

 select * from my_table order by if(isnull(my_field),1,0),my_field; 

Ну, как чистый ответ MySQL, я бы, наверное, сделал это так.

  select todo.title, todo.due_date from todo order by ifnull(todo.due_date, '9999-12-31')