중복된 값을 제거하고 한 번만 조회하는 방법
테이블에 같은 값이 여러 번 반복될 때, DISTINCT 키워드를 사용하면 중복을 제거하고 각 값을 한 번씩만 조회할 수 있습니다.
기본 문법은 다음과 같습니다.
SELECT DISTINCT yourColumnName FROM yourTableName;
예제 테이블 생성
문법을 이해하기 위해 먼저 테이블을 생성해 보겠습니다.
mysql> create table displayOnlyDistinctValue -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(100), -> UserAge int -> ); Query OK, 0 rows affected (0.47 sec)
다음으로 INSERT 명령어를 사용해 샘플 데이터를 삽입합니다.
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',23);
Query OK, 1 row affected (0.23 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Mike',23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',21);
Query OK, 1 row affected (0.16 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Carol',25);
Query OK, 1 row affected (0.16 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',26);
Query OK, 1 row affected (0.14 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Sam',27);
Query OK, 1 row affected (0.13 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Bob',22);
Query OK, 1 row affected (0.17 sec)
mysql> insert into displayOnlyDistinctValue(UserName,UserAge) values('Larry',22);
Query OK, 1 row affected (0.16 sec)전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from displayOnlyDistinctValue;
실행 결과는 다음과 같습니다.
+--------+----------+---------+ | UserId | UserName | UserAge | +--------+----------+---------+ | 1 | Larry | 23 | | 2 | Mike | 23 | | 3 | Larry | 21 | | 4 | Sam | 23 | | 5 | Carol | 25 | | 6 | Sam | 26 | | 7 | Sam | 27 | | 8 | Bob | 22 | | 9 | Larry | 22 | +--------+----------+---------+ 9 rows in set (0.00 sec)
결과를 보면 'Larry'는 3번, 'Sam'은 3번 등 이름과 나이가 중복되어 저장되어 있는 것을 확인할 수 있습니다.
Case 1: UserName 컬럼의 중복 제거
DISTINCT 키워드를 사용해 이름(UserName) 컬럼의 중복된 값을 한 번씩만 조회합니다.
mysql> select distinct UserName from displayOnlyDistinctValue;
출력 결과:
+----------+ | UserName | +----------+ | Larry | | Mike | | Sam | | Carol | | Bob | +----------+ 5 rows in set (0.00 sec)
9개 행에서 중복이 제거되어 총 5개의 고유한 이름만 반환된 것을 볼 수 있습니다.
Case 2: UserAge 컬럼의 중복 제거
같은 방식으로 나이(UserAge) 컬럼의 중복된 값도 한 번씩만 조회할 수 있습니다.
mysql> select distinct UserAge from displayOnlyDistinctValue;
출력 결과:
+---------+ | UserAge | +---------+ | 23 | | 21 | | 25 | | 26 | | 27 | | 22 | +---------+ 6 rows in set (0.00 sec)
정리
이처럼 SELECT DISTINCT는 지정한 컬럼의 중복된 값을 자동으로 제거하여 고유한 값만 반환합니다. 여러 컬럼을 함께 지정하면 해당 컬럼 조합 전체가 동일한 행만 하나로 처리되므로, 데이터 분석 시 유니크한 값 목록을 추출할 때 매우 유용하게 활용할 수 있습니다.