카테고리 없음
SQL 기본 - ORDER BY
porkbellyYam
2023. 3. 20. 21:10
결과 행을 사용자가 지정한 순서로 정렬하여 반환하는 PHRASE.
이때 ORDER BY와 SORT BY 와의 차이점은 무엇?
-> 동일한 기능을 수행하지만 일반적으로 ORDER BY가 더 많이 사용됨,
ORDER BY는 SELECT 문의 결과를 정렬하는데 사용됨. 결과는 하나 이상의 열에 대해 오름차순 또는 내림차순으로 정렬됨. DEFAULT 는 ASC.
SORT BY는 일부 데이터베이스에서만 사용할 수 있는 기능이며, 일반적으로 ORACLE DB 에서 사용됨. ORDER BY와 거의 동일하지만, 결과 집합이 정렬되기 전에 미리 정렬될 수 있는 행의 숫자를 설정가능. -> 성능 향상 가능
요악하자면, ORDER BY는 대부분의 SQL에서 사용할 수 있으며, 결과 집합을 정렬한다.
SORT BY 는 결과 집
궁금증1. 정렬하려는 컬럼에 공백 또는 NULL 값이 있는 경우 ASC, DESC 로 정렬하려고하면?
EX) 아래와 같은 데이터가 있다고 가정해보자.
id name age type
1 홍길동 21 A
2 김철수 27
3 이영희 22 A
4 정대한 26 (NULL)
5 안민국 23 F
6 지서울 25 E
7 조경긱 24 R
SELECT * FROM test_table
ORDER BY type ASC;
위와 같은 쿼리문을 사용했을때 결과는 ?
id name age type
4 정대한 26 (NULL)
2 김철수 27
1 홍길동 21 A
3 이영희 22 A
6 지서울 25 E
5 안민국 23 F
7 조경긱 24 R
NULL 값과 공백을 가지고 있는 TYPE이 오름차순에 의해 위로 올라옴.
값이 들어가 있는 레코드가 우선적으로 정렬하려면 ORDER BY 절에서 아래와 같은 조건을 명시하면 해결
SELECT
*
FROM test_table
ORDER BY
CASE
WHEN type is NULL THEN '2'
WHEN type = '' THEN '1'
ELSE '0'
END, type ASC;
id name age type
1 홍길동 21 A
3 이영희 22 A
6 지서울 25 E
5 안민국 23 F
7 조경긱 24 R
2 김철수 27
4 정대한 26 (NULL)
출력된 결과를 확인해보면 값이 들어가 있는 레코드부터 정렬이 됨.