2010-08-18 23 views

Trả lời

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

Bạn cũng có thể chỉ cần sử dụng

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

Về mặt kỹ thuật, phiên bản thứ hai sẽ thất bại nếu một người thực sự đã có một LastName trong DB của bạn của "ZZZZZZ".

LƯU Ý: Tôi chắc chắn nó chỉ là bởi vì bạn đang đưa ra một ví dụ, nhưng tôi hy vọng bạn không sử dụng SELECT * trong mã sản xuất thực tế ... :)

+0

Tuyên bố CASE là dự phòng. Bạn chỉ có thể sử dụng 'LastName IS NULL' để thay thế. – Hammerite

+0

Tôi không tin đó là ANSI tuân thủ. Trong khi câu hỏi không nói MySQL, và cú pháp viết tắt có thể làm việc trong MySQL tôi muốn gõ một vài ký tự phụ và vẫn tuân thủ 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

này nên làm điều đó cho bạn

select *, if(isnull(name), 1, 0) as is_name_null 
from names 
order by is_name_null asc, name asc 
Các vấn đề liên quan