반응형
웹이나 앱에서 데이터를 조회할 때, 동일한 값이 반복되어 표시되는 경우가 많다.
이럴 때 중복을 제거하고 고유한 값만 가져오는 방법이 바로 SELECT DISTINCT이다.
MySQL에서 DISTINCT는 중복 제거를 위한 강력한 키워드이며,
정확한 사용법을 알고 있으면 효율적인 데이터 조회가 가능하다.

📌 SELECT DISTINCT 기본 문법
가장 단순한 사용 예는 다음과 같다.
SELECT DISTINCT 컬럼명 FROM 테이블명;
예제:
SELECT DISTINCT city FROM customers;
- customers 테이블에서 city 값이 중복되지 않게 한 번씩만 조회됨
이는 지역 목록 드롭다운을 만들거나,
카테고리별 대표값을 가져올 때 매우 유용하게 사용된다.
반응형
🧪 실전 예제 1 – 이메일 도메인 목록 추출
SELECT DISTINCT SUBSTRING_INDEX(email, '@', -1) AS domain
FROM users;
- @ 뒤의 도메인만 뽑아서 고유한 이메일 제공자 리스트를 조회할 수 있다
🧪 실전 예제 2 – 성별 종류 가져오기
SELECT DISTINCT gender FROM members;
- 데이터에 'M', 'F', 'M', 'F', 'M'이 있어도 결과는 'M', 'F'만 반환됨
반응형
✅ 다중 컬럼에서의 DISTINCT
SELECT DISTINCT department, position
FROM employees;
- department + position의 조합이 완전히 같은 경우만 중복으로 간주하여 제거한다
주의: DISTINCT department, position은 department만 기준으로 제거하는 것이 아니라,
두 컬럼의 조합이 동일해야 중복 처리된다
⚠️ DISTINCT vs GROUP BY 차이점
| 구분 | SELECT DISTINCT | GROUP BY |
| 목적 | 중복 제거 | 그룹화 및 집계 |
| 결과 | 고유한 행만 표시 | 그룹별 결과 + 집계 함수 사용 |
| 예제 | SELECT DISTINCT name FROM users | SELECT name, COUNT(*) FROM users GROUP BY name |
GROUP BY는 집계 함수(SUM, COUNT 등)와 함께 주로 사용되며,
DISTINCT는 단순히 고유한 행을 필터링할 때 사용된다.
📊 DISTINCT + COUNT 조합
중복을 제거한 값의 개수를 알고 싶다면 아래처럼 사용한다.
SELECT COUNT(DISTINCT category_id) FROM products;
- 제품 테이블에서 고유한 카테고리 개수를 반환함
🚀 DISTINCT + ORDER BY 조합 예제
SELECT DISTINCT department
FROM employees
ORDER BY department ASC;
- 중복을 제거한 후 정렬해서 가독성을 높일 수 있음
📎 공식 문서 참고
MySQL SELECT DISTINCT 공식 가이드
https://dev.mysql.com/doc/refman/8.0/en/select.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] SELECT JOIN 완벽 정리 – INNER JOIN, LEFT JOIN, RIGHT JOIN 차이와 실전 예제 (0) | 2025.06.25 |
|---|---|
| [MySQL] SELECT + DATE_FORMAT / NOW() 함수 완벽 정리(날짜포맷, 현재시간) (0) | 2025.06.25 |
| [MySQL] SELECT CASE / IF 조건 분기 (쿼리 조건문 활용) (0) | 2025.06.25 |
| [MySQL] SELECT + COUNT, SUM, AVG, MAX, MIN 집계 함수 완전 정복 (0) | 2025.06.25 |
| [MySQL] SELECT LIMIT / OFFSET (행의 개수 제한 / 페이징 처리) (0) | 2025.06.24 |
| [MySQL] SELECT GROUP BY + HAVING (그룹화와 조건 필터링) (0) | 2025.06.24 |
| [MySQL] SELECT ORDER BY 정렬 방법 완벽 정리 (0) | 2025.06.24 |
| [MySQL] SELECT WHERE 조건절 완벽 정리 (1) | 2025.06.24 |