본문 바로가기
MYSQL

MYSQL - 유니크 distinct, 정렬 order by, 내림차순/오름차순 desc,asc

by 하니__ 2024. 5. 14.

 

유니크 키워드 distinct

함수와는 다르다
함수 사용법은 ( ) 가 있어 파라미터를 적지만
괄호가 없다
 
사용법은 아래와 같다

select author_lname
from books;

라고했을때

이렇게 중복된 데이터들이 나오게 되는데
중복된 데이터들을 유니크하게 보고 싶을때
 

select distinct author_lname
from books;

이렇게 앞에 적어준다

그러면 이렇게 중복데이터들은 하나씩만 보여준다
 
 

정렬 키워드 order by

 

 
이런 모습으로 있다고 할 때
author_lname로 정렬을 하고자 한다면
 

select *
from books
order by author_lname;

 

 
이렇게 정렬을 해주게 된다
 
그렇다면 응용으로 
full_name으로 정렬해보자
 

select *
from books
order by concat( author_fname, ' ' , author_lname ) as 'full_name';

라고 생각 할 수 있다
하지만
이렇게 하면 문법 오류가 나온다
 
왜일지 생각해보면 간단하다
 
select에 order by하는 부분이 없기 때문이다
 
그렇기때문에 다시

select *, concat( author_fname, ' ' , author_lname ) as 'full_name'
from books
order by full_name;

 
라고 적어서 order by는 위에서
새로운 컬럼의 이름으로 지정한 풀_네임을 입력하면 되겠다

 
정렬의 기본값은 오름차순이다
 
그렇다면 내림차순의 경우와
 
정렬을 2개 이상할때는 어떻게 해야할까
 
 

내림차순은 DESC 오름차순은 ASC

 
우선적으로 내림차순은 desc고 오름차순은 asc인걸 알고 가자
 
그리고

select *, concat( author_fname, ' ' , author_lname ) as 'full_name'
from books
order by full_name desc;

라고 입력하게 되면
앞선 풀 네임을 내림차순으로 보여주기 때문에

이와 같은 화면이 나오고
 
 

2개 이상 정렬시

 
author_fname 으로 오름차순정렬,
pages는 내림차순으로 정렬
 
라는 것을 보고 싶다면
 

select *
from books
order by author_fname asc, pages desc;

 
하나만 정렬 할때는 생략했던 오름차순이지만
fname의 오름차순정렬이
우선적이기때문에
먼저 오름차순을 적어준뒤에
pages의 내림차순을 적어준다