2010-08-18 13 views

risposta

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

Si potrebbe anche usare semplicemente

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

Tecnicamente, la seconda versione sarebbe fallire se una persona in realtà aveva un Cognome nel vostro DB di "ZZZZZZ".

NOTA: Sono sicuro che è solo perché si sta dando un esempio, ma spero che non stai usando SELECT * nel codice di produzione vero e proprio ... :)

+0

L'istruzione CASE è ridondante. Puoi semplicemente usare 'LastName IS NULL' invece. – Hammerite

+0

Non credo che sia conforme ANSI. Mentre la domanda dice MySQL, e la sintassi abbreviata potrebbe funzionare in MySQL, preferirei digitare alcuni caratteri extra e rimanere ANSI compatibile. –

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

questo dovrebbe farlo per voi

select *, if(isnull(name), 1, 0) as is_name_null 
from names 
order by is_name_null asc, name asc 
Problemi correlati