[MySQL] 정렬 order by로 null을 뒤로 보내기

오늘은 MySQL에서 null 값을 맨 뒤로 보내는 방법을 소개합니다.


주의 사항

이 포스트 내용은 MySQL 특성을 다루므로 다른 데이터베이스 제품과는 차이가 있습니다. 같은 문제여도 대응 방법이 다를 수 있습니다.



정렬하면 null이 먼저 앞으로 온다

기본 동작은 정렬 후 null이 앞으로 옵니다. 먼저 만나게 돼요.

아래와 같이, null 에 대해 아무것도 고려하지 않고 order by (정렬)하면, null이 먼저 표시됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT id, display_order 
    -> FROM items
    -> ORDER BY display_order;
 
+----+---------------+
| id | display_order |
+----+---------------+
|  1 |          NULL |
|  2 |             1 |
|  3 |             2 |
|  4 |             3 |
+----+---------------+
cs


이럴 경우 null을 뒤로 보내고 싶을 때 어떻게 할까요? 이게 본 포스팅 주제입니다.


정렬 시, null 값은 뒤로 보내기

null이 맨 뒤에 위치하려면 IS NULL ASC 를 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT id, display_order 
    -> FROM items
    -> ORDER BY display_order IS NULL ASC, display_order;
 
+----+---------------+
| id | display_order |
+----+---------------+
|  2 |             1 |
|  3 |             2 |
|  4 |             3 |
|  1 |          NULL |
+----+---------------+
cs


여기서는 ORDER BY display_order IS NULL ASC를 추가함으로써, null이 맨 뒤로 갑니다.


마지막으로

알아두면 mysql 개발 효율이 조금 올라갈지도 몰라 TIP이라고 생각해 포스팅했습니다.


끝까지 읽어 주셔서 감사합니다!

댓글(0)

Designed by JB FACTORY