IT 프로그래밍 관련/MySQL

MySQL 테이블 데이터 정렬하기

지나는행인 2021. 3. 16. 21:40
728x90

테이블은 판다스 데이터프레임같이 데이터 정렬이 가능하다.  

 

정렬에는 오름차순 정렬이 있고, 내림차순 정렬이 있다.

 

정렬을 해주는 키워드는 order by    로,  써야하는 위치가 중요하다.

 

books 테이블의 기본 화면이다.

 

여기서 author_lname  컬럼을 정렬해보겠다.    코드는

1
2
3
4
5
6
7
8
9
select author_lname from books order by author_lname;
 
 
 
 
 
select author_lname 
from books 
order by author_lname;
cs

select author_lname from books order by author_lname;

가 정렬을 위한 코드이다.

books 테이블에서 author_lname컬럼을 정렬하고, author_lname컬럼을 보여줘라.

 

아래의 7행부터 쓴 코드는  1번행의 코드를 세줄에 나눠 쓴 코드이다.

보편적으로 코드를 알아보기 쉽게 ,  나눠쓴다.

 

코드를 실행 시 

위와 같이 컬럼이 알파벳순으로 정렬된 것을 볼 수 있다.

 

select author_lname from books order by author_lname ;

select author_lname from books order by author_lname asc;

(위의 두 코드 다 오름차순 정렬이다. asc 는 써도 되고 안써도 된다.)

 

기본적으로 order by 는 default 값이 asc   인 오름차순이다.

 

만약 내림차순으로 정렬을 하고 싶을 때는

 

select author_lname from books order by author_lname desc ;

 

내림차순을 하기 위한 desc 를 써준다.

 

그렇다면 두가지 이상으로 정렬하는 것도 가능할까?

 

가능하다.   그리고 각각 따로 오름차순, 내림차순의 정렬이 가능하다.

 

예를 들어보겠다.

 

1
2
3
select title, author_lname
from books
order by author_lname asc, title asc;
cs

위의 코드를 실행시 , books 테이블의  author_lname 컬럼을 먼저 오름차순으로 정렬하고, 그 정렬한 상태에서 title

컬럼을 오름차순으로 정렬한다.

말로는 잘 이해가 안가지만,

실행화면으로 보면 이해가 간다.

 

위의 화면을 보면 먼저 author_lname 컬럼이 알파벳순으로 오름차순 정렬되어 있는 걸 볼 수 있다.

그리고 lname에서 같은 값이 존재할 시 그 안에서 title 컬럼이 오름차순으로 정렬된 것을 볼 수 있다.

title 컬럼 하나만 놓고 본다면  정렬 모양이 이상하다.

 

두개의 컬럼을 정렬하는 것을 예로 들었지만, 여러개도 가능하다. 정렬은 order by 뒤의 컬럼 순서대로 정렬된다.