MySQL 중복 제거 DISTINCT 사용 방법

MySQL에서 SELECT 결과에서 중복된 값을 삭제하는 방법을 알아보겠습니다.

중복된 값을 삭제하는 방법은 여러가지가 있습니다.

그 중에서도 DISTINCT를 사용해 중복 제거를 하는 방법을 보겠습니다.

 

DISTINCT

중복 제거위해 사용하는 DISTINCT는 SELECT문에 사용을 합니다.

DISTINCT 기본 사용 방법을 다음과 같습니다.

SELECT DISTINCT
       컬럼명1, 
       컬럼명2,
       ...
FROM 테이블명  

 

DISTINCT를 사용해 중복값을 제거하는 경우 NULL도 하나의 값으로 취급을 합니다.

샘플 데이터를 보면서 DISTINCT를 사용해 데이터를 취득해보겠습니다.

mysql> SELECT * FROM Member;
+----+----------+-------+------+--------+---------+
| id | Memberid | name  | age  | gender | company |
+----+----------+-------+------+--------+---------+
|  1 |        1 | tom   |   24 | F      | A       |
|  2 |        2 | cat   |   36 | F      | A       |
|  3 |        3 | work  |   29 | M      | C       |
|  4 |        4 | bench |   45 | F      | A       |
|  5 |        5 | post  |   59 | F      | B       |
|  6 |        6 | gre   |   21 | M      | C       |
|  7 |        8 | php   |   23 | F      | NULL    |
|  8 |        9 | da    |   61 | M      | NULL    |
|  9 |        7 | jang  |   36 | M      | E       |
+----+----------+-------+------+--------+---------+
9 rows in set (0.00 sec)

 

샘플 데이블인 Membergender만 지정해 중복된 값을 제거해보겠습니다.

SELECT DISTINCT 
	     gender 
FROM   Member;

결과

+--------+
| gender |
+--------+
| F      |
| M      |
+--------+
2 rows in set (0.00 sec)

 

gender 컬럼에는 F또는 M값만 들어있습니다.

DISTINCT로 중복을 제거하면 FM 2개의 값만 나오게 됩니다.

이번에는 DISTINCT에 컬럼을 여러개 지정해서 취득해보겠습니다.

SELECT DISTINCT 
	     gender, 
       company 
FROM   Member;

 

결과

+--------+---------+
| gender | company |
+--------+---------+
| F      | A       |
| M      | C       |
| F      | B       |
| F      | NULL    |
| M      | NULL    |
| M      | E       |
+--------+---------+
6 rows in set (0.00 sec)

 

gendercompany 컬럼에 중복된 패던을 삭제되고 출력되었습니다.

결과에서 알 수 있듯이 NULL값도 하나의 패턴으로 인식되어 취득되었습니다.

중복된 값을 제거할 수 있는 DISTINCT 사용 방법을 알아봤습니다.

댓글