Порядок SQL по " Нет` с нулями в конце

у меня есть запрос MySql, который заказывает мне результаты по no столбец (int, может быть null). Простой пример:

SELECT * FROM table ORDER BY no ASC

Я хотел бы получить resultset отсортированы как

1, 2, 3, 10, 52, 66, NULL, NULL, NULL

но я

NULL, NULL, NULL, 1, 2, 3, 10, 52, 66

возможно ли это с помощью SQL-запроса ?

6 ответов


не могли бы вы попробовать это?

ORDER BY ISNULL(no),no;

можно использовать CASE заявление для настройки заказа:

SELECT * 
FROM table 
ORDER BY case when no is null then 2 else 1 end, no

Это заказы на "nullableness" во-первых, и


SELECT * FROM table ORDER BY ISNULL(field), field ASC;

SELECT * FROM table ORDER BY COALESCE(no,999999) ASC

просто замените 999999 чем-то большим, если ваши номера, естественно, больше.


хорошо, кажется, я понял:

SELECT * FROM table WHERE no IS NOT NULL ORDER BY no ASC UNION
SELECT * FROM table WHERE no IS NULL

или есть лучший способ ?


SELECT * FROM table ORDER BY no ASC NULLS LAST