새소식

데이터베이스/mysql

[MYSQL] 오름차순, 내림차순 정렬, 다중 정렬(ORDER BY)

  • -

다음과 같은 테이블이 있을때 오름차순, 내림차순으로 정렬하여 정보를 가져오는 법을 알아보겠습니다.

테이블의 이름은 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;

음.. 하지만 추천드리는 방법은 아닙니다. 필드 이름으로 명확하게 하는게 좋으니까요

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.