MySQL 중복 행 제거 개요
MySQL에서 데이터를 조회할 때 동일한 값이 여러 번 저장되어 있는 경우가 있습니다. 이럴 때 DISTINCT 키워드를 사용하면 중복된 행을 제거하고 각 값이 한 번씩만 반환되도록 할 수 있습니다.
아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용하여 중복 값을 포함한 레코드를 입력합니다. 'Robert'와 'David'는 각각 두 번씩 삽입됩니다.
mysql> insert into DemoTable1998 values('Robert');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1998 values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1998 values('Robert');
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable1998 values('David');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1998 values('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1998 values('David');
Query OK, 1 row affected (0.10 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회하면 다음과 같이 중복된 값이 그대로 출력됩니다.
mysql> select * from DemoTable1998;
실행 결과:
+--------+ | Name | +--------+ | Robert | | Chris | | Robert | | David | | Bob | | David | +--------+ 6 rows in set (0.00 sec)
'Robert'와 'David'가 각각 2번씩 나타나는 것을 확인할 수 있습니다.
4. DISTINCT로 중복 제거하기
중복된 행 중에서 각 값이 한 번씩만 반환되도록 하려면 SELECT DISTINCT 쿼리를 사용합니다.
mysql> select distinct * from DemoTable1998;
실행 결과:
+--------+ | Name | +--------+ | Robert | | Chris | | David | | Bob | +--------+ 4 rows in set (0.01 sec)
DISTINCT 사용 시 참고 사항
- DISTINCT는 SELECT 바로 뒤에 위치하며, 지정된 모든 컬럼 조합 기준으로 중복을 판단합니다.
- 여러 컬럼을 함께 조회할 경우, 해당 컬럼들의 값 조합이 완전히 동일한 행만 하나로 합쳐집니다.
- 대용량 테이블에서 DISTINCT를 사용하면 정렬 작업이 발생할 수 있으므로 성능에 유의해야 합니다.
이처럼 MySQL에서는 DISTINCT 키워드 하나만으로도 손쉽게 중복 행을 제거하고 고유한 값만 깔끔하게 조회할 수 있습니다.