Можно использовать SQL для сортировки по дате, но введите нулевые даты в конце набора результатов?
У меня есть множество задач в базе данных MySQL, а одно из полей - "крайняя дата". Не каждая задача должна иметь крайний срок.
Я хотел бы использовать SQL для сортировки задач по дате окончания, но поставьте те, у которых нет даты окончания в результирующем наборе. Как и сейчас, сначала отображаются нулевые даты, затем остальные сортируются по крайним срокам, начиная с самого последнего.
Любые идеи о том, как это сделать с помощью SQL? (Я могу сделать это с PHP, если это необходимо, но решение SQL-only было бы отлично.)
Спасибо!
Ответы
Ответ 1
Здесь используется решение, использующее только стандартный SQL, а не ISNULL(). Эта функция не является стандартным SQL и может не работать с другими брендами РСУБД.
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
Ответ 2
SELECT * FROM myTable
WHERE ...
ORDER BY ISNULL(myDate), myDate
Ответ 3
SELECT foo, bar, due_date FROM tablename
ORDER BY CASE ISNULL(due_date, 0)
WHEN 0 THEN 1 ELSE 0 END, due_date
Итак, у вас есть 2 порядка по предложениям. Первый помещает все ненулевые значения спереди, затем сортирует по дате после этого