2012-11-08 2 views
0

알파벳순으로 항목 목록을 반환하고 싶지만 처음에 나타나는 것과는 반대로 "빈"결과가 끝에 붙습니다. MySQL ORDER 문을 사용하거나 다른 방법으로이 작업을 수행 할 수 있습니까?공백 결과를 알파벳 순서로 끝내기

SELECT * FROM persons WHERE status = 'active' ORDER BY lastName; 

내가 무엇을 얻을 :

Jason 
Peter 
Frank Asimov 
Reda Banks 
Scott Sorrel 

내가 원하는 무엇 :

SELECT * FROM persons WHERE status = 'active' ORDER BY lastName, firstName 
+0

빈 문자열은 null 또는 빈 문자열을 의미합니까? – danihp

+0

빈 문자열은 빈 문자열 – kylex

답변

-1

나는 당신이 필요로하는 모든 ORDER BYfirstName 믿습니다
1
SELECT * FROM persons WHERE status = 'active' 
ORDER BY case when ifnull(lastName,'') = '' then 1 else 0 end, lastname 
:
Frank Asimov 
Reda Banks 
Scott Sorrel 
Jason 
Peter 
+0

+1을 의미합니다. 당신은 그것을 향상시킬 수 있습니다 :'nullif (lastName, '')가 null 인 다음 1 else 0 end' – danihp

+0

만약 엔트리가 null이 아니고 단지 비어 있다면? – kylex

+0

은 두 경우 모두 고려하도록 수정되었습니다. –

0

FIELD 문을 사용하여 수행 할 수 있습니다. 다음과 같이됩니다.

SELECT [...] ORDER BY FIELD(lastName, '') DESC 

이렇게하면 모든 빈 문자열의 lastnames가 끝에 추가됩니다. 빈 문자열 대신 데이터베이스에 NULL이있는 경우

SELECT [...] ORDER BY FIELD(lastName, NULL) DESC; 
관련 문제