복붙노트

[SQL] 하단에 널 (null)와 ORDER BY의 ASC

SQL

하단에 널 (null)와 ORDER BY의 ASC

나는 지역 테이블에 학교 테이블을 연결하는 SQL 쿼리를 쓰고 있어요. 각 학교는 한 지역에 연결되어 일대 다 관계 간단한. 다음과 같이 내 쿼리는 다음과 같습니다

SELECT 
    schools.id AS schoolid,
    schools.name AS school, 
    districts.id AS districtid, 
    districts.name AS district
FROM sms_schools AS schools
    LEFT JOIN sms_districts AS districts ON schools.districtid = districts.id
WHERE 1 = 1
ORDER BY districts.name, schools.name

하지 모든 학교가 지구에 연결되어 있기 때문에이 왼쪽 조인 않은 이유입니다. 예를 들어 한 학교는 집 그 집 스쿨 모든 학생을 포함 할 수있다 스쿨 할 수있다. 즉 지구에 없을 것입니다.

그래서 내가하고 싶은 것은 지구 이름과 후 학교 이름 그대로 주문하여 순서를 사용합니다. 유일한 문제는 내가 널 지구 그래서 난 다음 내 출력의 끝에 '기타'라는 그룹을 사용할 수 있습니다 하단에되고 싶은 것입니다.

이것은 출력의 끝에 null로 오름차순 순서로 할 수있다?

해결법

  1. ==============================

    1.내 대답을 볼 수있는 질문을 한 후 1 분. 수 있도록하는 조항 사용 사례에 의해 순서에서 널 (null)는 다른 것보다 더 높은 가치를 가지고 :

    내 대답을 볼 수있는 질문을 한 후 1 분. 수 있도록하는 조항 사용 사례에 의해 순서에서 널 (null)는 다른 것보다 더 높은 가치를 가지고 :

     ORDER BY (CASE WHEN districts.id IS NULL then 1 ELSE 0 END),districts.name, schools.name;
    
  2. ==============================

    2.당신은 ISNULL () 함수를 사용할 수 있습니다.

    당신은 ISNULL () 함수를 사용할 수 있습니다.

    MySQL의 설명서에서 :

    예를 들면 :

    ORDER BY ISNULL(districts.name), districts.name, schools.name
    

    내가 대신 MySQL을위한 CASE 옵션이 사용하는 것을 좋아합니다. ISNULL ()는 표준 SQL과 기능은 SQL의 다른 버전에서 다르게 아니기 때문에 그냥 휴대용 아니라고주의하십시오.

  3. ==============================

    3.기본적으로 널 (null)는 상단에 발생하지만 당신은 당신이 필요로하는 위치에 넣어 것입니다 할당 기본값에 ISNULL을 사용할 수 있습니다 ...

    기본적으로 널 (null)는 상단에 발생하지만 당신은 당신이 필요로하는 위치에 넣어 것입니다 할당 기본값에 ISNULL을 사용할 수 있습니다 ...

    
    SELECT schools.id AS schoolid,schools.name AS school, districts.id AS districtid, districts.name AS district FROM sms_schools AS schools LEFT JOIN sms_districts AS districts ON schools.districtid = districts.id WHERE 1 = 1 
    ORDER BY isnull(districts.name,'1'), schools.name 
    
    
  4. ==============================

    4.

    SELECT
     schools.id AS schoolid,
     schools.name AS school,
     districts.id AS districtid,
     districts.name AS district,
     if(schools.districtid IS NULL,1,0) as sort 
    FROM sms_schools AS schools
    LEFT JOIN sms_districts AS districts 
     ON schools.districtid = districts.id
    WHERE 1 = 1
    ORDER BY sort, districts.name, schools.name
    

    '새'colunm INSITE 더 이상 정렬 규칙을 놓고 어떤 번호를 사용 (... 만약에 의해 순서)는 디렉토리 경우에 정렬 할 수 있습니다 테스트하는 경우, 코드에서 필드를 숨기

    행운을 빕니다

  5. from https://stackoverflow.com/questions/5993109/order-by-asc-with-nulls-at-the-bottom by cc-by-sa and MIT license