자격증/SQLD

[SQL 첫걸음] 10강. 복수의 열을 지정해 정렬하기

동호다찌 2022. 4. 4. 09:22
반응형

1. ORDER BY

mysql> SELECT 열명 FROM 테이블명 WHERE 조건식
        ORDER BY 열명1 [ASC | DESC],  열명2 [ASC | DESC]...;
  • 복수의 열을 지정해 정렬하는 경우
    • ex) 상품코드와 해당 상품의 하위 번호까지 함께 고려하는 경우 정렬할 때 NULL값에 주의해야 한다!

2. 복수 열로 정렬 지정

  • ORDER BY구를 지정해도 1개의 열만으로는 정확히 순서를 결정할 수 없는 경우가 많다.
  • 언제나 같은 순서로 결과를 얻고 싶다면, 반드시 ORDER BY구로 순서를 지정해야 한다.

2-1. ORDER BY구로 복수 열 지정하기

mysql> SELECT 열명 FROM 테이블명 ORDER BY 열명1, 열명2...;
  • 값이 같아서 순서를 결정할 수 없는 경우에는 다음으로 지정한 열명을 기준으로 정렬한다.
  • 위의 경우에는 첫번째 오는 열을 기준으로 값이 같은 경우가 있는 경우에는 다음 열명을 기준으로 가름한다.

2-2. 정렬방법 지정하기

  • 복수 열을 지정한 경우 각 열에 대해 개별적으로 정렬방법을 지정할 수 있다.
  • 각 열 뒤에 ASC나 DESC를 붙여준다.

2-2-1. 복수 열 정렬

mysql> SELECT 열명 FROM 테이블명 ORDER BY 열명1 [ASC | DESC], 열명2 [ASC | DESC]...;
  • 구문 중에 []는 생략 가능
  • |: 둘 중에 하나
  • .. 동일한 형태로 연속해서 지정 가능하다는 의미
  • 복수열을 지정하는 경우에도 정렬방법 생략시, 기본값은 오름차순(ASC)이다.

2-2-2. a열의 정렬 방식은 내림차순으로 지정해주었는데, b열의 정렬 방식은 생략되어 있는 경우

ORDER BY a DESC, b;
  • 데이터베이스 제품에 따라 기본값이 달라서 내림차순이 될 수도, 오름차순이 될 수도 있다.
  • 문장의 가독성을 높이기 위해서라도 가능한한 정렬방법을 생략하지 말고 지정하자!

3. NULL값의 정렬순서

  • NULL값은 그 특성상 대소비교를 할 수 없기 때문에 정렬 시에는 별도의 방법으로 취급한다.
  • 특정 값보다 큰 값, 특정 값보다 작은 값으로 나눈다.
  • ORDER BY로 지정한 열에서 NULL값을 가지는 행은 가장 먼저 표시되거나 가장 나중에 표시된다.
  • NULL값에 대한 대소비교 방법은 표준 SQL에도 규정되어 있지 않기 때문에
  • 데이터베이스 제품에 따라 기준이 다르다.
  • MySQL에서는 NULL값을 가장 작은 값으로 취급
  • -> 오름차순에서 가장 먼저, 내림차순에서는 가장 나중에 표시
반응형