출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

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;
-- 제대로된 query
-- 첫번째 출력컬럼으로 오름차순 정렬
select name from goods order by 0;
-- 잘못된 query
-- 0 이란 숫자는 order by사용할수 없습니다.

 

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% 입력된 자료 순서라고 장담할수 없습니다. 
별다른 실행계획이 없이 풀스켄 했다면 
rowid 순서로 조회가 됩니다. 
보통은 입력 순서대로 되지만 삭제작업이 빈번하게 일어나는 경우 나중에 입력된 자료가 먼저 나오기도 하는 것으로 알고 있습니다.. 



출처: https://aboutitdev.tistory.com/25 [About IT Dev]

 


-- 숫자

-- 급여의 오름차순 정렬 / 작은수>>>큰수
SELECT *
FROM emp
ORDER BY sal -- asc; 생략 가능 / 오름차순이 default
;

-- 급여의 내림차순 정렬 / 큰수>>>작은수
SELECT *
FROM emp
ORDER BY sal desc
;

SELECT *
FROM emp
ORDER BY comm -- null 값은 맨 아래로 내려간다 (가장큰수마냥..)
;




-- 문자 [a>z가 디폴트]
SELECT *
FROM emp
ORDER BY ename 
;



-- 날짜 [최근> 오래됨이 디폴트]
SELECT *
FROM emp
ORDER BY hiredate desc
;


-- 중복

SELECT *
FROM emp
ORDER BY hiredate desc, sal -- sal은 작은 순서로 [jame/ford\
;

+ Recent posts