Ответ 1
Не могли бы вы попробовать?
ORDER BY ISNULL(no),no;
У меня есть запрос 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-запросом?
Не могли бы вы попробовать?
ORDER BY ISNULL(no),no;
Вы можете использовать оператор CASE
для настройки порядка:
SELECT *
FROM table
ORDER BY case when no is null then 2 else 1 end, no
Сначала это заказы на "ошибочность", а no
second.
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