1. 사용방법
ORDER BY [ASC|DESC] --QUERY문의 맨뒤에 옵니다. EX) SELECT * FROM EMP ORDER BY JOB -- JOB를 오름차순(어샌딩)으로 정렬하여 보여준다. SELECT * FROM EMP ORDER BY JOB ASC -- JOB를 오름차순(어샌딩)으로 정렬하여 보여준다. SELECT * FROM EMP ORDER BY JOB DESC -- JOB를 내림차순(디샌딩)으로 정렬하여 보여준다. select empno,ename from emp order by empno,ename; -- sal컬럼을 기준으로 오름차순으로 정렬하고 sal컬럼의 값이 같은 레코드는 다시 -- ename컬럼을 기준으로 오름차순으로 정렬하여 출력합니다.
※ 디폴트는 ASC 입니다.
※ 참고사항 오름차순:정순정렬:ASC 내림차순:역순정렬:DESC
2. 데이타형에 따른 정렬
문자열은 ASC면 A,B,C순으로 ASC코드값이 작은것부터이며 DESC면 C,B,A순으로 ASC코드값이 큰것부터나옵니다.
정수나 실수는 ASC면 전체수가 작은것부터이며 DESC면 전체수가 큰것부터나옵니다.
날짜는 ASC면 오래된 날짜부터 정렬되며 DESC면 최근의 날짜부터 정렬됩니다.
한글은 ASC면 가,나,다.... 순으로 정렬되며 DESC면 ....다,나,가 순으로 정렬된다.
NULL값은 연산이나 비교도 안됩니다. 하지만 정렬시에는 NULL값은 ASC면 무조건 맨뒤에 나오며 DESC면 무조건 앞에 나옵니다.
※ 무조건 맨뒤나 앞에 나올때의 널값은 순서가 입력순서는 순서대로입니다.
※ ASC일때 NULL 값을 맨앞에 하는 방법이 있습니다. ex : order by name nulls first ex : order by nvl(name,' ')
※ DESC일때 NULL 값을 맨뒤에 하는 방법이 있습니다. ex : order by name nulls last
3. 특별한 사용법
※ ORDER BY는 ASC, DESC 키워드를 입력하지 않으면 자동으로 오름차순 정렬됩니다. ※ ORDER BY 뒤에 컬럼명을 , 간격으로 2개이상을 사용가능합니다.
ex : select * from table_name order by a,b; * a를 오름차순으로 정렬한상태에서 a의 값이 중복인 레코드는 다시 b를 오름차순으로 정렬한다. * a의 값이 중복값이 없을때는 b는 오름차순하지 않는다.
ORDER BY 뒤에 숫자가 나오면 현재 TABLE의 컬럼위치를 말합니다. select * from emp order by 1 DESC;면 TABLE의 첫번째 컬럼으로 내림차순으로 정렬한다는 뜻입니다.
※ 0은 사용할수 없다.
ORDER BY 뒤에 앨리어스(별명)을 두어 정렬이 됩니다. SELECT A AA,B FROM ORDER BY AA;
select name from goods order by 1;
IN 연산자에 사용한 문자열 값들을 기준으로 원하는 순서로 출력하는 방법
SELECT * FROM TABLE_NAME WHERE ID IN('084', '081', '079', '077', '127') ORDER BY DECODE(ID, '084', 1, '081', 2, '079', 3, '077', 4, '127', 5);
※ DECODE 함수로 원하는 값에 우선순위를 줄수 있습니다.
조회조건없는 쿼리 실행시 출력 정렬상태
SELECT IDX, NAME, AGE FROM TABLE_NAME; 이라고 할때 입력순서대로 출력되며 IDX가 PK라면 IDX를 기준으로 오름차순으로 정렬됩니다. 100% 입력된 자료 순서라고 장담할수 없습니다. |
'오라클' 카테고리의 다른 글
오라클 FUNCTION() 생성 예제 (0) | 2012.08.30 |
---|---|
DB2 함수 정리. (0) | 2012.08.29 |
최상위 코드와 그 최상위 코드를 대상으로 그룹 . (0) | 2012.08.24 |
오라클 백업 및 복구(Export, Import) (0) | 2012.08.10 |
OUT Join (0) | 2012.08.08 |