2012-02-16 15 views
60

Jak mogę zamówić DESC przez pole, ale najpierw podać wartości NULL?kolejność mysql od, null first i DESC po

Więc mam tabelę:

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

chcę je wybrać tak, że wyniki byłyby:

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

Odpowiedz

118

Spróbuj tego:

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

powinno działać (dla mySql)

+0

Lub podzapytanie do kategorii – delive

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

Myślę, że ta odpowiedź jest przeciwna do pierwszej? –

+1

@ xi.lin: Nie, pierwszy z nich umieszcza 'IS NULL' * (co jest w zasadzie funkcją, która zwraca 1 lub 0) * w kolejności DESC, ta umieszcza' IS NOT NULL' w porządku rosnącym. Są one równoważne. –

+0

@ BlueRaja-DannyPflughoeft Dzięki za wyjaśnienie! Po prostu błędnie myślę, że IS NULL to filtr zamiast funkcji. –