Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL DISTINCT 절과 NULL 값: NULL이 여러 개일 때 결과는 어떻게 될까?

NULL 값이 여러 개인 열에 DISTINCT 적용 시 MySQL의 동작

여러 개의 NULL 값이 포함된 열에 DISTINCT 절을 적용하면, MySQL은 모든 NULL 값을 동일한 값으로 취급합니다.

즉, DISTINCT 절의 기본 특성에 따라 결과 집합에는 NULL이 단 하나만 반환되고, 나머지 중복 NULL 값들은 모두 제거됩니다.

예제로 확인하기

'testing'이라는 테이블의 'Lname' 열에 NULL 값이 여러 개 저장되어 있다고 가정해 보겠습니다.

mysql> Select * from testing;
+------+---------+---------+
| id   | fname   | Lname   |
+------+---------+---------+
|  200 | Raman   | Kumar   |
|  201 | Sahil   | Bhalla  |
|  202 | Gaurav  | NULL    |
|  203 | Aarav   | NULL    |
|  204 | Harshit | Khurana |
|  205 | Rahul   | NULL    |
|  206 | Piyush  | Kohli   |
|  207 | Lovkesh | NULL    |
+------+---------+---------+
8 rows in set (0.00 sec)

mysql> SELECT DISTINCT Lname from testing;
+---------+
| Lname   |
+---------+
| Kumar   |
| Bhalla  |
| NULL    |
| Khurana |
| Kohli   |
+---------+
5 rows in set (0.00 sec)

결과 분석

위 예제에서 'Lname' 열에는 원래 4개의 NULL 값이 존재하지만, DISTINCT 절을 적용한 쿼리 결과에는 NULL이 단 한 번만 표시된 것을 확인할 수 있습니다.

이처럼 MySQL은 DISTINCT 연산 시 NULL을 일반적인 고유 값처럼 하나의 그룹으로 묶어 처리하므로, 중복 제거 대상에 NULL도 포함됩니다. 이는 SQL 표준의 DISTINCT 동작 방식과도 일치하는 결과입니다.