English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 결과 집합에서 중복 값을 제거하는 방법을 배울 것입니다.
데이터베이스 테이블에서 데이터를 가져올 때, 결과 집합은 중복 행이나 값이 포함될 수 있습니다. 이러한 중복 값을 제거하려면 SELECT 키워드 뒤에 직접 DISTINCT 키워드를 지정할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다:
DISTINCT 절은 결과 집합에서 중복 행을 제거하는 데 사용됩니다:
SELECT DISTINCT column_list FROM table_name;
여기서는,column_list은 (는) 데이터베이스 테이블의 열 이름이나 필드 이름 목록을 쉼표로 구분한 것으로, 값을 가져올 때 필요합니다 (예를 들어name,age,country와 같습니다).
주의: 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 값을 동일한 값으로 간주하기 때문입니다.