mysql order by, null first und DESC after

78

Wie kann ich DESC nach einem Feld bestellen, aber zuerst die NULL-Werte auflisten?

Also habe ich einen Tisch:

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

Ich möchte sie so auswählen, dass die Ergebnisse sind:

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

Antworten:

155

Versuche dies:

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

sollte funktionieren (für mySql)

DonCallisto
quelle
Oder Unterabfrage zur Kategorie
30
SELECT *
FROM TableX
ORDER BY (requestId IS NOT NULL)
       , requestId DESC
ypercubeᵀᴹ
quelle
Ich denke, diese Antwort ist das Gegenteil von der ersten?
xi.lin
4
@ xi.lin: Nein, der erste setzt IS NULL (was im Wesentlichen eine Funktion ist, die eine 1 oder eine 0 zurückgibt) in DESC-Reihenfolge, dieser setzt IS NOT NULLin aufsteigender Reihenfolge. Sie sind gleichwertig.
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Danke für die Erklärung! Ich dachte nur fälschlicherweise, IS NULL sei ein Filter anstelle einer Funktion.
xi.lin