ORDER BY
- SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 컬럼을 기준으로 정렬하여 출력하는 데에 사용한다.
- 컬럼명, SELECT 절에서 사용한 ALIAS 명, 컬럼 순서를 나타내는 정수로 순서를 지정한다.
- ASC 오름차순(DEFAULT, 생략가능), DESC 내림차순
- ORACLE의 경우 NULL 값을 가장 큰 값으로 취급하여 내림차순 정렬 시 NULL이 가장 먼저 조회된다.
- 날짜형 데이터 타입의 경우 오름차순 정렬 시, 가장 빠른 값이 먼저 출력된다. (2019.01.01이 2019.12.30보다 먼저)
1 2 3 4 5 6 |
SELECT 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 컬럼이나 표현식] [HAVING 그룹조건식] [ORDER BY 컬럼이나 표현식 [ASC 또는 DESC]]; |
# 컬럼명, ALIAS명으로 정렬
- 테이블명 : PLAYER
- 컬럼명[ALIAS] : PLAYER_NAME[선수명], POSITION[포지션], BACK_NO[백넘버]
- PLAYER 테이블에서 전체 컬럼을 조회하고, 포지션 내림차순으로 출력
SELECT * FROM PLAYER ORDER BY POSITON DESC; |
SELECT PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버 FROM PLAYER ORDER BY 포지션 DESC; |
# 여러가지 컬럼을 기준으로 정렬
- 테이블명 : PLAYER
- 컬럼명[ALIAS] : PLAYER_NAME[선수명], POSITION[포지션], BACK_NO[백넘버], HEIGHT[키]
- PLAYER테이블에서 키가 큰 순서대로, 키가 같은 경우 백넘버 순으로 정렬하며, 키가 NULL인 경우는 제외
SELECT PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE HEIGHT IS NOT NULL ORDER BY HEIGHT DESC, BACK_NO; |
# 컬럼 순서를 기준으로 정렬
- 테이블명 : PLAYER
- 컬럼명[ALIAS] : PLAYER_NAME[선수명], POSITION[포지션], BACK_NO[백넘버]
- PLAYER테이블에서 백넘버 내림차순, 포지션 오름차순, 선수명 오름차순
※ 컬럼명이 길거나 정렬조건이 많은 경우 편리하게 사용할 수 있으나, 향후 유지보수성이나 가독성이 떨어지므로 주의해야 한다.
SELECT PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버 FROM PLAYER ORDER BY 3 DESC, 2, 1; |
# 특정 데이터 우선 정렬(임의 정렬)
- 테이블명 : PLAYER
- 컬럼명[ALIAS] : PLAYER_NAME[선수명], POSITION[포지션], BACK_NO[백넘버]
- 포지션이 GK인 선수 우선 정렬(포지션 : FW, GK, MF, DF, ...)
SELECT *, CASE WHEN POSITION = 'GK' THEN '1' ELSE '2' END AS POSITION_PRIORITY FROM PLAYER ORDER BY POSITION_PRIORITY; |
'DataBase' 카테고리의 다른 글
[DataBase] 오라클 내장함수(2) - 숫자형/날짜형 함수 (0) | 2019.09.02 |
---|---|
[DataBase] 오라클 내장함수(1) - 문자형 함수 (0) | 2019.08.11 |
[DataBase] MySQL 실행/종료 (0) | 2018.12.28 |
[DataBase] MySQL 설치 (0) | 2018.12.27 |
[DataBase] DBMS (0) | 2018.12.27 |