inner - ¿Es posible usar SQL para ordenar por fecha pero poner fechas nulas en la parte posterior del conjunto de resultados?
order by en sql (3)
Tengo un montón de tareas en una base de datos MySQL, y uno de los campos es "fecha límite". No todas las tareas tienen que tener una fecha límite.
Me gustaría utilizar SQL para ordenar las tareas por fecha de vencimiento, pero pongo las que no tienen una fecha límite en la parte posterior del conjunto de resultados. Como está ahora, las fechas nulas aparecen primero, luego el resto se ordena por fecha de plazo más temprano a más reciente.
¿Alguna idea sobre cómo hacer esto solo con SQL? (Puedo hacerlo con PHP si es necesario, pero una solución solo de SQL sería genial).
¡Gracias!
Aquí hay una solución que usa solo SQL estándar, no ISNULL (). Esa función no es SQL estándar, y puede no funcionar en otras marcas de RDBMS.
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
SELECT foo, bar, due_date FROM tablename
ORDER BY CASE ISNULL(due_date, 0)
WHEN 0 THEN 1 ELSE 0 END, due_date
Entonces tienes 2 cláusulas de orden por. El primero pone todos los no nulos en el frente, luego ordena por fecha de vencimiento después de ese
SELECT * FROM myTable
WHERE ...
ORDER BY ISNULL(myDate), myDate