2010-08-18 7 views

Odpowiedz

11
SELECT 
    * 
FROM 
    People 
ORDER BY 
    CASE WHEN LastName IS NULL THEN 1 ELSE 0 END, 
    LastName 

Można też po prostu użyć

SELECT 
    * 
FROM 
    People 
ORDER BY 
    COALESCE(LastName, 'ZZZZZ') 

Technicznie, druga wersja nie powiedzie się, jeśli dana osoba rzeczywiście miał LastName w dB "Zzzzzz".

UWAGA: Jestem pewien, że to właśnie dlatego, że dajesz przykład, ale mam nadzieję, że nie używa SELECT * w rzeczywistej produkcji kodu ... :)

+0

Instrukcja CASE jest nadmiarowa. Zamiast tego możesz użyć 'LastName IS NULL'. – Hammerite

+0

Nie wierzę, że jest zgodna z ANSI. Podczas gdy pytanie mówi MySQL, a skrócona składnia może działać w MySQL, wolę wpisać kilka dodatkowych znaków i pozostać zgodnym z ANSI. –

0
SELECT * 
FROM `People` 
ORDER BY case when `LastName` is null then 1 else 0 end, 
    `LastName` 
1
SELECT *, LastName IS NULL AS nullity 
    FROM `People` 
ORDER BY nullity ASC, `LastName` ASC 
0

to powinno wystarczyć dla ciebie

select *, if(isnull(name), 1, 0) as is_name_null 
from names 
order by is_name_null asc, name asc 
Powiązane problemy