- 카테고리:
ORDER BY¶
SELECT 목록에서 결과 테이블의 행 순서를 지정합니다.
구문¶
SELECT ...
FROM ...
ORDER BY orderItem [ , orderItem , ... ]
[ ... ]
- 여기서:
orderItem ::= { <column_alias> | <position> | <expr> } [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
column_alias
쿼리 블록의 SELECT 목록에 나타나는 열 별칭입니다.
position
SELECT 목록에서 식의 위치입니다.
expr
현재 범위의 테이블에 대한 모든 식입니다.
ASC | DESC
선택적으로 정렬 키 값을 오름차순(최저에서 최고) 또는 내림차순(최고에서 최저)으로 반환합니다.
기본값:
ASC
NULLS FIRST | LAST
정렬 순서(
ASC
또는DESC
)에 따라, NULL이 아닌 값 앞/뒤에 NULL 값이 반환되는지 여부를 선택적으로 지정합니다.기본값: 정렬 순서(
ASC
또는DESC
)에 따라 다릅니다. 자세한 내용은 아래의 사용법 노트를 참조하십시오.
사용법 노트¶
모든 데이터는 ASCII 테이블에 있는 각 문자의 숫자 바이트 값에 따라 정렬됩니다. UTF-8 인코딩이 지원됩니다.
숫자 값의 경우, 소수점 앞의 선행 영(0)과 소수점 뒤의 후행 영(
0
)은 정렬 순서에 영향을 주지 않습니다.달리 지정하지 않는 한, NULL 값은 NULL이 아닌 값보다 높은 것으로 간주됩니다. 결과적으로 NULL의 순서는 정렬 순서에 따라 달라집니다.
정렬 순서가
ASC
인 경우, NULL이 마지막에 반환됩니다. NULL이 첫 번째가 되도록 하려면NULLS FIRST
를 사용하십시오.정렬 순서가
DESC
인 경우, NULL이 먼저 반환됩니다. NULL이 마지막이 되도록 하려면NULLS LAST
를 사용하십시오.
ORDER BY는 쿼리의 다양한 수준에서 사용할 수 있습니다(예: 하위 쿼리 또는 OVER() 하위 절 내부). 하위 쿼리 또는 하위 절 내의 ORDER BY는 해당 하위 쿼리 또는 하위 절 내에서만 적용됩니다. 예를 들어, 다음 쿼리의 ORDER BY는 쿼리의 가장 바깥쪽 수준이 아니라 하위 쿼리 내에서만 결과를 정렬합니다.
select * from ( select branch_name from branch_offices ORDER BY monthly_sales DESC limit 3 ) ;
이 예에서는 하위 쿼리에 ORDER BY가 지정되어 있으므로 하위 쿼리는 월별 매출 순으로 이름을 반환합니다. 하위 쿼리의 ORDER BY는 외부 쿼리에 적용되지 않습니다. 이 쿼리는 월별 매출이 가장 높았던 세 지점의 이름을 반환하지만, 반드시 월별 매출을 기준으로 정렬하는 것은 아닙니다.
정렬은 비용이 많이 들 수 있습니다. 외부 쿼리의 결과를 정렬하려는 경우, 쿼리의 최상위 수준에서만
ORDER BY
절을 사용하고, 필요한 경우가 아니면 하위 쿼리에서ORDER BY
절을 사용하지 마십시오.
예¶
문자열의 정렬 순서 예:
SELECT column1 FROM VALUES ('a'), ('1'), ('B'), (null), ('2'), ('01'), ('05'), (' this'), ('this'), ('this and that'), ('&'), ('%') ORDER BY column1; +---------------+ | COLUMN1 | |---------------| | this | | % | | & | | 01 | | 05 | | 1 | | 2 | | B | | a | | this | | this and that | | NULL | +---------------+
숫자의 정렬 순서 예:
SELECT column1 FROM VALUES (3), (4), (null), (1), (2), (6), (5), (0005), (.05), (.5), (.5000) ORDER BY column1; +---------+ | COLUMN1 | |---------| | 0.05 | | 0.50 | | 0.50 | | 1.00 | | 2.00 | | 3.00 | | 4.00 | | 5.00 | | 5.00 | | 6.00 | | NULL | +---------+
NULL 값의 정렬 순서 예:
SELECT column1 FROM VALUES (1), (null), (2), (null), (3) ORDER BY column1; +---------+ | COLUMN1 | |---------| | 1 | | 2 | | 3 | | NULL | | NULL | +---------+ SELECT column1 FROM VALUES (1), (null), (2), (null), (3) ORDER BY column1 NULLS FIRST; +---------+ | COLUMN1 | |---------| | NULL | | NULL | | 1 | | 2 | | 3 | +---------+ SELECT column1 FROM VALUES (1), (null), (2), (null), (3) ORDER BY column1 DESC; +---------+ | COLUMN1 | |---------| | NULL | | NULL | | 3 | | 2 | | 1 | +---------+ SELECT column1 FROM VALUES (1), (null), (2), (null), (3) ORDER BY column1 DESC NULLS LAST; +---------+ | COLUMN1 | |---------| | 3 | | 2 | | 1 | | NULL | | NULL | +---------+