English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL DISTINCT 절

이 튜토리얼에서는 결과 집합에서 중복 값을 제거하는 방법을 배울 것입니다.

다른 값 검색

데이터베이스 테이블에서 데이터를 가져올 때, 결과 집합은 중복 행이나 값이 포함될 수 있습니다. 이러한 중복 값을 제거하려면 SELECT 키워드 뒤에 직접 DISTINCT 키워드를 지정할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다:

문법

DISTINCT 절은 결과 집합에서 중복 행을 제거하는 데 사용됩니다:

SELECT DISTINCT column_list FROM table_name;

여기서는,column_list은 (는) 데이터베이스 테이블의 열 이름이나 필드 이름 목록을 쉼표로 구분한 것으로, 값을 가져올 때 필요합니다 (예를 들어nameagecountry와 같습니다).

주의: DISTINCT 절의 행동은UNIQUE제약 조건이 있으며, null에 대한 대응 방식이 다릅니다. 두 개의 NULL 값은 독립적이지만 동시에 서로 다른 것으로 간주됩니다.

몇 가지 예제를 통해 실제 작동 방식을 보여드리겠습니다.

데이터베이스에 다음과 같은customers다음과 같은 기록을 포함한 테이블이 있습니다:

+---------+--------------------+-----------+-------------+
| cust_id | cust_name                                   | city               | postal_code         |
+---------+--------------------+-----------+-------------+
|       1 | Maria Anders                               | Berlin           | 12209       |
|       2 | Fran Wilson                               | Madrid           | 28023       |
|       3 | Dominique Perrier                       | Paris             | 75016       |
|       4 | Martin Blank                           | Turin             | 10100                                   |
|       5 | Thomas Hardy                           | Portland         | 97219       |
|       6 | Christianna Aguilera | Madrid           | 28001       |
+---------+--------------------+-----------+-------------+

다음 문장을 실행해 보세요. 이 문장은 이 테이블의city칼럼에 모든 행이 있습니다。

SELECT city FROM customers;

실행하면 다음과 같은 출력을 얻습니다:

+-----------+
| 도시      |
+-----------+
| 베를린    |
| 마드리드    |
| 파리     |
| 튜르인     |
| 포트랜드  |
| 마드리드    |
+-----------+

细致히 출력을 확인하면, 도시 'Madrid'가 결과 집합에서 두 번 등장하는 것을 발견할 수 있습니다. 이게 좋지 않습니다. 좋아요, 이 문제를 해결해 보겠습니다.

중복 데이터를 제거하는 데 사용됩니다.

다음 문은 DISTINCT를 사용하여customers테이블에서 모든 도시 목록을 생성합니다.

SELECT DISTINCT city FROM customers;

위 명령을 실행한 후, 다음과 같은 출력을 얻을 수 있습니다:

+-----------+
| 도시      |
+-----------+
| 베를린    |
| 마드리드    |
| 파리     |
| 튜르인     |
| 포트랜드  |
+-----------+

그대로 보면, 이번 결과 집합에는 중복된 값이 없습니다.

주의:SELECT DISTINCT 문을 NULL 값이 여러 개 있는 열에 사용할 경우, SQL은 하나의 NULL 값을 유지하고 다른 값을 결과 집합에서 제거합니다. 이는 DISTINCT가 모든 NULL 값을 동일한 값으로 간주하기 때문입니다.