다음과 같은 테이블이 있을때 오름차순, 내림차순으로 정렬하여 정보를 가져오는 법을 알아보겠습니다.
테이블의 이름은 Info로 가정하겠습니다
ID |
NAME |
AGE |
A313 |
Sun |
14 |
A311 |
Oracle |
12 |
B120 |
Linux |
24 |
C123 |
Window |
14 |
오름차순 정렬
이때 ID 열을 기준으로 오름차순 정렬해서 내용들을 보고 싶다면 ORDER BY를 이용하면 됩니다!!
SESLECT * FROM TABLE ORDER BY 기준열 과 같이 작성하면 됩니다.
SELECT * FROM Info ORDER BY ID;
ID기준 오름차순 정렬하여 다음과 같이 보여줍니다.
이는 SELECT * FROM Info ORDER BY ID ASC; 와 같습니다. 즉 오름차순시 ASC는 생략해도 됩니다
생략하면 오름차순이 default 입니다.
ID |
NAME |
AGE |
A311 |
Oracle |
12 |
A313 |
Sun |
14 |
B120 |
Linux |
24 |
C123 |
Window |
14 |
내림차순 정렬
그러면 만약 내림차순으로 보고 싶다면???
ORDER BY ID DESC를 이용하면 됩니다!!
SELECT * FROM Info ORDER BY ID DESC; 로 작성하면 다음과 같이 정보들이 나오게 됩니다.
ID |
NAME |
AGE |
C123 |
Window |
14 |
B120 |
Linux |
24 |
A313 |
Sun |
14 |
A311 |
Oracle |
12 |
ID를 기준으로 내림차순 정렬되어 나오는 것을 볼 수 있습니다.
다중 정렬
이번엔 약간 심화해서 AGE를 기준으로 내림차순으로, AGE 값이 같다면 ID기준 내림차순 정렬하고 싶다면 어떻게 할까요??? (다중 정렬)
원하는 우선순위대로 뒤에 연달아서 써주면 됩니다.
SELECT * FROM TABLE ORDER BY 필드1, 필드2.... 필드n
즉 위에서 이야기한대로 정렬하고 싶다면 다음과 같이 작성합니다
SELECT * FROM Info ORDER BY AGE DESC, ID DESC; 로 작성합니다.
또 다른 방법
다른 방법으로는 필드 이름이 아니라 필드 번호로도 정렬할 수 있습니다
인덱스는 1번 부터 시작합니다
즉 1번 필드는 ID가 됩니다.
SELECT * FROM TABLE ORDER BY number;
ID 필드를 기준으로 오름차순 정렬한다면 다음과 같이 합니다
SELECT * FROM Info ORDER BY 1;
음.. 하지만 추천드리는 방법은 아닙니다. 필드 이름으로 명확하게 하는게 좋으니까요