2012-02-16 15 views
60

Come è possibile ordinare DESC per un campo, ma elencare prima i valori NULL?ordine mysql per, null prima e DESC dopo

Così sto avendo una tabella:

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

voglio selezionarle in modo che i risultati sarebbero:

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

risposta

118

Prova questa:

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

dovrebbe funzionare (per mySql)

+0

Oppure subquery alla categoria – delive

23
SELECT * 
FROM TableX 
ORDER BY (requestId IS NOT NULL) 
     , requestId DESC 
+0

Penso che questa risposta sia opposta alla prima? –

+1

@ xi.lin: No, il primo pone 'IS NULL' * (che è essenzialmente una funzione che restituisce 1 o 0) * nell'ordine DESC, questo pone' IS NOT NULL' in ordine ascendente. Sono equivalenti. –

+0

@ BlueRaja-DannyPflughoeft Grazie per la spiegazione! Ho semplicemente pensato erroneamente che IS NULL sia un filtro invece di una funzione. –

Problemi correlati