- 카테고리:
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 |
+---------+