티스토리 뷰

DB/SQL

[MySQL] ORDER BY / ASC / DESC

SdardewValley 2021. 9. 1. 17:51
반응형

ORDER BY

테이블의 레코드들을 정렬하기 위해서 사용

 

ASC

오름차순으로 정렬

 

DESC

내림차순으로 정렬

 

SELECT
	*
FROM
	table
ORDER BY column_name -- column의 이름
    ASC; -- 혹은 DESC를 사용

위의 순서대로 사용하면 된다.

💡 ASC나 DESC가 없다면 기본으로 ASC, 즉 오름차순으로 정렬한다.

 

여러 COLUMN을 기준으로 정렬하고 싶을 때

SELECT
	*
FROM
	table
ORDER BY
	column1 ASC, column2 DESC, column3 ASC, column4 DESC;

위와 같이 표기하면 된다.

 

COLUMN의 이름이 아니라 COLUMN의 순서(인덱스)를 사용해서 정렬할 수도 있다.

SELECT
	*
FROM
	table
ORDER BY
	1 ASC, 2 DESC;

여기서 주의해야 할 것은 보통 컴퓨터는 0부터 시작하지만 칼럼은 1부터 시작한다.

 

즉, 제일 앞에 있는 칼럼은 0번째 칼럼이 아닌, 1번째 칼럼이다.

 

가장 학생 수가 많은 학년을 알고 싶을 때

SELECT
	grade AS 학년, COUNT(*) AS 학생수
FROM
	student
GROUP BY
	grade
ORDER BY
	COUNT(*) DESC;

 

정렬 기준인 COLUMN에 NULL이 있을 때 ORDER BY

NULL이 포함된 레코드는 처음 혹은 마지막으로 간다.

 

SELECT
	*
FROM
	student
GROUP BY
	grade
ORDER BY
	grade IS NULL ASC, grade ASC;

grade가 NULL인 경우는 제일 앞에 정렬된다. 그리고 grade를 기준으로 정렬한다.

 

만약 grade가 NULL인 경우를 뒤로 보내고 싶다면 아래와 같이 IS NULL 뒤에 ASC를 DESC로 수정하면 된다.

SELECT
	*
FROM
	student
GROUP BY
	grade
ORDER BY
	grade IS NULL DESC, grade ASC;

 

💡 ORDER BY는 마지막에 실행된다

<실행순서>

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. DISTINCT
  7. ORDER BY

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함