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

MySQL에서 DISTINCT 키워드로 중복 행을 제거하고 고유한 행만 조회하는 방법

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 키워드 하나만으로도 손쉽게 중복 행을 제거하고 고유한 값만 깔끔하게 조회할 수 있습니다.