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

MySQL DISTINCT 키워드로 결과 집합에서 고유한 행만 조회하는 방법

MySQL에서 SELECT 문에 DISTINCT 키워드를 사용하면 결과 집합에 포함된 중복 행을 제거하고 고유한(unique) 행만 손쉽게 조회할 수 있습니다. 데이터 정리나 리포트 작성 시 중복 값을 걸러내야 할 때 매우 유용하게 활용됩니다.

기본 사용 예제

먼저 다음과 같이 중복 데이터가 들어 있는 'names' 테이블을 살펴보겠습니다.

mysql> Select * from names;

+------+-----------+
| id   | name      |
+------+-----------+
| 1    | Rahul     |
| 2    | Gaurav    |
| 3    | Raman     |
| 4    | Aarav     |
| 5    | Ram       |
| 5    | Ram       |
| 5    | Ram       |
+------+-----------+

7 rows in set (0.00 sec)

위 결과를 보면 id가 5이고 이름이 'Ram'인 동일한 행이 세 번 반복되어 저장되어 있는 것을 확인할 수 있습니다. 이때 다음과 같이 DISTINCT 키워드를 적용하면 중복이 제거된 결과 집합을 얻을 수 있습니다.

mysql> Select DISTINCT * from names;

+------+-----------+
| id   | name      |
+------+-----------+
| 1    | Rahul     |
| 2    | Gaurav    |
| 3    | Raman     |
| 4    | Aarav     |
| 5    | Ram       |
+------+-----------+

5 rows in set (0.00 sec)

DISTINCT의 동작 원리

DISTINCT는 SELECT 뒤에 지정된 모든 열의 조합을 기준으로 중복 여부를 판단합니다. 즉, 위 예제처럼 모든 열(*)을 대상으로 하면 행 전체가 완전히 동일한 경우에만 하나의 행으로 취급됩니다.

특정 열을 기준으로 중복을 제거하고 싶다면 해당 열만 DISTINCT 뒤에 지정하면 됩니다.

mysql> Select DISTINCT name from names;

이 경우 name 값이 같은 행들은 서로 다른 id를 가지고 있더라도 하나의 값으로 통합되어 반환됩니다.

참고 사항

- DISTINCT는 NULL 값도 하나의 고유한 값으로 취급하여 중복된 NULL은 한 번만 반환합니다.
- 대량의 데이터에서 DISTINCT를 사용하면 내부적으로 정렬 또는 해시 작업이 수행되므로 성능에 영향을 줄 수 있습니다. 필요한 열만 선택적으로 지정하는 것이 좋습니다.