2010-08-18 32 views

Antwort

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

Sie auch

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

Technisch gesehen ist die zweite Version würde fehlschlagen, wenn eine Person tatsächlich einen Namen in der DB von "ZZZZZZ" hat verwenden Sie einfach könnten.

HINWEIS: Ich bin sicher, es ist nur, weil Sie ein Beispiel gibt, aber ich hoffe, Sie sind nicht SELECT * in der tatsächlichen Produktion Code ... :)

+0

Die CASE-Anweisung ist redundant. Sie können stattdessen 'LastName IS NULL' verwenden. – Hammerite

+0

Ich glaube nicht, dass das ANSI-konform ist. Während die Frage MySQL sagt und die abgekürzte Syntax in MySQL funktioniert, würde ich lieber ein paar zusätzliche Zeichen eingeben und ANSI-konform bleiben. –

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

dies sollte es tun für Sie

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