본문 바로가기
프로그래밍/MySQL

📊 [SQL 프로젝트] 제8장 DISTINCT - 중복된 데이터를 하나로 보기

by 강릉바다의 블로그 2026. 6. 29.

제8장 DISTINCT - 중복된 데이터를 하나로 보기


오늘의 질문

여러분이 고객 정보를 조회했다고 생각해 봅시다.

다음과 같은 결과가 나왔습니다.

Country
Germany
Germany
Germany
France
France
Brazil
Brazil
Mexico

사장님이 묻습니다.

"독일 고객이 몇 명인지는 나중에 보고, 우리 고객이 있는 나라는 어디인지 먼저 알고 싶습니다."

 

우리는 같은 나라 이름을 여러 번 볼 필요가 없습니다.

나라 이름을 한 번씩만 보면 됩니다.

이럴 때 사용하는 명령어가 바로 DISTINCT입니다.


학습 목표

이번 장을 학습하면 다음 내용을 할 수 있습니다.

  • DISTINCT의 역할을 설명할 수 있다.
  • 중복된 데이터를 제거할 수 있다.
  • 하나의 열과 여러 개의 열에서 DISTINCT를 사용할 수 있다.
  • DISTINCT를 실무에서 활용할 수 있다.

8-1. 먼저 실행해 봅시다.

먼저 다음 SQL을 실행해 보세요.

SELECT Country
FROM Customers;

결과를 보면 같은 나라가 여러 번 나타납니다.

예를 들면

Country
Germany
Germany
Germany
France
France
Brazil
Brazil
Mexico

같은 나라가 반복되고 있습니다.


이번에는 다음 SQL을 실행해 보세요.

SELECT DISTINCT Country
FROM Customers;

실행 결과

Country
Germany
France
Brazil
Mexico
UK
USA
Spain

같은 나라가 한 번만 출력됩니다.


잠깐 생각해 보기

고객 수가 줄어든 것일까요?

아닙니다.

중복된 결과만 제거된 것입니다.

데이터베이스 안에는 여전히 모든 고객 정보가 저장되어 있습니다.

DISTINCT는 조회 결과만 변경합니다.


8-2. DISTINCT를 한 줄씩 읽어 보기

SELECT DISTINCT Country
FROM Customers;

한 줄씩 읽어 보면

SELECT

가져와라.

DISTINCT

중복을 제거하여.

Country

Country 열을.

FROM Customers

Customers 테이블에서.

즉,

Customers 테이블에서 Country 열을 가져오되, 같은 값은 한 번만 보여 주어라.

라는 뜻입니다.


🤔 왜 DISTINCT가 필요할까요?

생각해 봅시다.

우리 회사 고객이 어느 나라에 있는지 알고 싶은데

결과가

Germany
Germany
Germany
Germany
Germany
Germany
Germany

처럼 나온다면

읽기 어렵습니다.

DISTINCT를 사용하면

Germany
France
Brazil
Mexico
USA

처럼

데이터의 종류를 쉽게 확인할 수 있습니다.


8-3. DISTINCT는 한 개의 열에서 가장 많이 사용합니다.

대표적인 예입니다.

SELECT DISTINCT Country
FROM Customers;

또는

SELECT DISTINCT City
FROM Customers;

같은 도시 이름도 한 번만 출력됩니다.


8-4. 여러 개의 열에도 사용할 수 있습니다.

다음 SQL을 실행해 보세요.

SELECT DISTINCT Country,
                City
FROM Customers;

이번에는

국가와 도시의 조합이 중복되지 않도록 출력됩니다.

예를 들어

Country City
Germany Berlin
Germany Mannheim
France Paris

처럼 출력됩니다.


🤔 왜 결과가 예상과 다를까요?

많은 학생들이 이렇게 생각합니다.

"Country만 중복이 제거되는 것 아닌가요?"

 

그렇지 않습니다.

DISTINCT는

Country + City

전체를 하나의 묶음으로 생각합니다.

따라서

Country City
Germany Berlin
Germany Berlin

은 하나만 남지만

Country City
Germany Berlin
Germany Mannheim

은 서로 다른 데이터이므로 모두 출력됩니다.


💡 잠깐! 이것도 알아두세요

DISTINCT는 중복을 제거하지만,

어떤 값을 기준으로 정렬할지는 결정하지 않습니다.

만약 결과를 보기 좋게 정렬하고 싶다면

SELECT DISTINCT Country
FROM Customers
ORDER BY Country;

처럼

ORDER BY와 함께 사용하는 경우가 매우 많습니다.


자주 하는 실수

① DISTINCT를 FROM 뒤에 작성한다.

잘못된 예

SELECT Country
FROM DISTINCT Customers;

올바른 예

SELECT DISTINCT Country
FROM Customers;

② 모든 고객 수가 줄었다고 생각한다.

DISTINCT는

데이터를 삭제하지 않습니다.

조회 결과만 변경합니다.


③ 여러 열에서도 각각 중복이 제거된다고 생각한다.

DISTINCT는

전체 열의 조합을 비교합니다.


④ ORDER BY 없이 결과 순서를 기대한다.

DISTINCT는

정렬 기능이 아닙니다.

필요하면 ORDER BY를 함께 사용합니다.


실무에서는 어떻게 사용할까요?

회사에서는

  • 거래하는 국가 목록
  • 판매 중인 상품 종류
  • 근무하는 부서 목록
  • 등록된 직책 목록
  • 고객이 거주하는 도시 목록

등을 조회할 때 자주 사용합니다.


실습

실습 1

고객이 있는 나라를 한 번씩만 조회해 보세요.

SELECT DISTINCT Country
FROM Customers;

실습 2

고객이 있는 도시를 한 번씩만 조회하세요.

SELECT DISTINCT City
FROM Customers;

실습 3

국가와 도시의 조합을 중복 없이 조회하세요.

SELECT DISTINCT Country,
                City
FROM Customers;

실무 미션

당신은 해외영업팀 직원입니다.

팀장님이 말했습니다.

"우리 회사 고객이 있는 국가를 알고 싶습니다. 같은 나라는 한 번만 나오면 됩니다."

 

다음 조건을 만족하는 SQL을 작성해 보세요.

  • Customers 테이블 사용
  • Country만 조회
  • 중복 제거
  • 나라 이름 순으로 정렬

핵심 정리

✔ DISTINCT는 중복된 결과를 제거한다.

✔ 데이터를 삭제하는 것이 아니다.

✔ 하나의 열뿐 아니라 여러 열에도 사용할 수 있다.

✔ 여러 열에서는 조합 전체를 비교한다.

✔ ORDER BY와 함께 사용하는 경우가 많다.


연습 문제

기본 문제

  1. DISTINCT는 어떤 역할을 하나요?
  2. DISTINCT를 사용해도 데이터가 삭제되지 않는 이유를 설명해 보세요.
  3. 다음 SQL이 의미하는 내용을 설명해 보세요.
SELECT DISTINCT Country
FROM Customers;

응용 문제

  1. Customers 테이블에서 도시(City)를 중복 없이 조회하는 SQL을 작성해 보세요.
  2. Customers 테이블에서 국가(Country)와 도시(City)의 조합을 중복 없이 조회하는 SQL을 작성해 보세요.
  3. 국가를 중복 없이 조회하고, 나라 이름 순으로 정렬하는 SQL을 작성해 보세요.

도전 문제

사장님이 다음과 같이 요청했습니다.

"우리 회사 상품은 몇 개의 공급업체(Supplier)가 납품하는지 알고 싶습니다. 공급업체 번호(SupplierID)를 중복 없이 확인해 주세요."

 

필요한 열만 선택하여 SQL을 작성해 보세요.


다음 장 예고

이번 장에서는 중복을 제거하는 DISTINCT를 배웠습니다.

하지만 아직 원하는 데이터를 글자의 일부만 보고 찾는 방법은 배우지 않았습니다.

예를 들어 사장님이 이렇게 요청할 수 있습니다.

"이름이 'A'로 시작하는 고객만 찾아 주세요."

"도시에 'on'이 들어가는 고객을 찾아 주세요."

 

이처럼 일부 글자를 기준으로 검색하는 기능이 바로 LIKE입니다.

다음 장에서는 LIKE - 원하는 글자가 포함된 데이터 찾기를 배우며, SQL 검색 기능의 진정한 시작을 경험하게 될 것입니다.