SQL ORDER by `no` с NULL в конце

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

SELECT * FROM table ORDER BY no ASC

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

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

но я получаю

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

Возможно ли это с SQL-запросом?

Ответ 1

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

ORDER BY ISNULL(no),no;

Ответ 2

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

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

Сначала это заказы на "ошибочность", а no second.

Ответ 3

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

Ответ 4

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

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

Ответ 5

Хорошо, думаю, я понял:

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

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

Ответ 6

SELECT * FROM table ORDER BY no ASC NULLS LAST