SQL 기본 - ORDER BY

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)

출력된 결과를 확인해보면 값이 들어가 있는 레코드부터 정렬이 됨.