VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
ORDER BY가 결과의 순서를 결정하는 유일한 것입니다.
시작하기 전에 mysql -u root -p sakila로 클라이언트를 여세요.
ORDER BY의 동작 방식
SORT_COLUMN을 정렬 기준 열로 바꾸세요. DIRECTION은 가장 작은 것부터인 ASC 또는 가장 큰 것부터인 DESC 중 하나입니다. 선택 사항이고, 생략하면 ASC를 뜻합니다.
예제
- 열 하나로 정렬
- 반대로 정렬
- 두 번째 열로 동점 깨기
정렬 열을 우선순위 순서로 쉼표로 구분해 나열하세요. 각 열은 자체 방향을 가집니다.
rental_rate가 여전히 내림차순으로 앞섭니다. 각 요금 안에서는 가장 짧은 영화가 먼저 옵니다. 길이가 같은 영화는 여전히 동점이므로, 완전히 결정된 순서에는 모든 행을 유일하게 만들 만큼의 열이 필요합니다.
- 별칭으로 정렬
ORDER BY는 같은 쿼리의 열 별칭을 참조할 수 있습니다.
별칭은 작은따옴표가 아니라 백틱으로 감싸세요
공백이 든 별칭은 인용 부호로 감싸야 하는데, 여기서 2가지 인용 방식이 갈립니다. 작은따옴표는 이름이 아니라 문자열을 만들고, 고정된 문자열로 정렬하면 아무것도 정렬되지 않습니다.'Rate'를 4글자 단어로 읽고 모든 행을 같은 값으로 정렬했습니다. 오류도 없고, 경고도 없고, 정렬도 없습니다.
백틱은 별칭을 지정하고, 정렬이 일어납니다:
NULL이 놓이는 자리
열은NULL을 가질 수 있는데, 값이 전혀 없음을 기록하는 것입니다. 0도 아니고 빈 문자열도 아닙니다. MySQL은 NULL을 모든 실제 값보다 작은 것으로 정렬하므로, 오름차순은 NULL을 먼저 놓습니다. address의 603개 행 중 4개에 address2가 없습니다.
NULL보다 크고 어떤 텍스트보다 작은 것으로 정렬됩니다. 그 4개의 NULL 행은 서로 동점이므로, 그 사이의 순서는 이 쿼리가 결정하지 않습니다.
DESC는 이것을 뒤집고 NULL은 맨 아래로 갑니다. 같은 결과를 반대로 정렬한 것의 끝부분입니다:
요약
- 결과의 순서를 결정하려면
ORDER BY를 사용하세요. 다른 어떤 것도 순서를 결정하지 않습니다. - 가장 큰 것부터 보려면
DESC를 쓰세요.ASC가 기본값입니다. - 동점을 깨려면 정렬 열 여러 개를 우선순위 순서로 나열하세요.
- 별칭으로 정렬할 때는 백틱으로 감싸세요. 작은따옴표는 문자열을 만듭니다.
- 오름차순 정렬에서는
NULL이 먼저, 내림차순 정렬에서는 마지막에 옵니다.
함께 보기
- SELECT — 정렬되는 문
- 열 별칭 — 정렬 기준 열에 이름 붙이기
- LIMIT — 정렬된 결과의 처음 몇 행 가져오기
- MySQL의 페이지네이션 — 큰 테이블에서 정렬의 비용