mysql упорядковується за, спочатку null, а після DESC


79

Як я можу замовити DESC за полем, але спочатку вказати значення NULL?

Отже, я маю таблицю:

reuestId | offerId | offerTitle
1        | 1       | Alfa
NULL     | 2       | Beta
2        | 3       | Gamma

Я хочу вибрати їх так, щоб результати були:

NULL | 2 | Beta
2    | 3 | Gamma
1    | 1 | Alfa

Відповіді:


156

Спробуйте це:

ORDER BY [reuestId] IS NULL DESC, [reuestId] DESC

повинен працювати (для mySql)


Або підзапит до категорії

30
SELECT *
FROM TableX
ORDER BY (requestId IS NOT NULL)
       , requestId DESC

Я думаю, що ця відповідь протилежна першій?
xi.lin

4
@ xi.lin: Ні, перший розміщує IS NULL (що є по суті функцією, яка повертає 1 або 0) у порядку DESC, цей ставить IS NOT NULLу порядку зростання. Вони рівнозначні.
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft Дякую за пояснення! Я просто помилково подумав IS NULL - це фільтр замість функції.
xi.lin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.