MySQL에서 중복된 데이터를 제거하고 고유한(유일한) 값만 조회하려면 DISTINCT 키워드를 사용하면 됩니다. DISTINCT는 지정한 컬럼에서 중복되는 값을 하나로 묶어 결과를 반환해 줍니다.
DISTINCT 기본 문법
SELECT DISTINCT yourColumnName FROM yourTableName;
위 문법이 실제로 어떻게 동작하는지 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다.
예제 테이블 생성
다음 쿼리로 테이블을 생성합니다.
mysql> create table selectUniqueValue -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(20), -> Age int -> ); Query OK, 0 rows affected (0.64 sec)
샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 입력합니다.
mysql> insert into selectUniqueValue(Name,Age) values('John',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Carol',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Sam',22);
Query OK, 1 row affected (0.10 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Mike',22);
Query OK, 1 row affected (0.16 sec)
mysql> insert into selectUniqueValue(Name,Age) values('David',22);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Maxwell',22);
Query OK, 1 row affected (0.19 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Robert',21);
Query OK, 1 row affected (0.15 sec)전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from selectUniqueValue;
실행 결과는 다음과 같습니다.
+----+---------+------+ | Id | Name | Age | +----+---------+------+ | 1 | John | 21 | | 2 | Carol | 21 | | 3 | Sam | 22 | | 4 | Mike | 22 | | 5 | David | 22 | | 6 | Larry | 23 | | 7 | Bob | 23 | | 8 | Maxwell | 22 | | 9 | Robert | 21 | +----+---------+------+ 9 rows in set (0.00 sec)
Age 컬럼에는 21, 22, 23 값이 중복되어 들어가 있는 것을 확인할 수 있습니다.
DISTINCT로 고유한 값 조회하기
이제 DISTINCT 키워드를 사용해 Age 컬럼의 중복 없는 고유한 값만 조회해 보겠습니다.
mysql> select distinct Age from selectUniqueValue;
실행 결과는 다음과 같습니다.
+------+ | Age | +------+ | 21 | | 22 | | 23 | +------+ 3 rows in set (0.00 sec)
결과를 보면 중복되던 나이 값들이 제거되고 21, 22, 23이라는 세 가지 고유한 값만 반환된 것을 확인할 수 있습니다. 이처럼 DISTINCT 키워드를 활용하면 특정 컬럼의 유일한 값 목록을 손쉽게 얻을 수 있습니다.