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

MySQL에서 DISTINCT 키워드로 고유한 값만 선택하는 방법

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 키워드를 활용하면 특정 컬럼의 유일한 값 목록을 손쉽게 얻을 수 있습니다.