SELECT DISTINCT를 지정하면 쿼리 결과에는 고유한 행만 남습니다. 즉, 결과에서 완전히 일치하는 행들의 각 집합마다 행 1개만 남습니다.
고유한 값을 가져야 하는 컬럼 목록을 지정할 수 있습니다: SELECT DISTINCT ON (column1, column2,...). 컬럼을 지정하지 않으면 모든 컬럼을 기준으로 판단합니다.
다음 테이블을 예로 살펴보겠습니다:
DISTINCT를 사용하는 경우:
DISTINCT 사용:
DISTINCT와 ORDER BY
DISTINCT 절과 ORDER BY 절을 함께 사용할 수 있습니다. DISTINCT 절은 ORDER BY 절보다 먼저 실행됩니다.
다음 테이블을 예로 살펴보겠습니다:
2, 4는 정렬 전에 잘려 나갔습니다.
쿼리를 작성할 때는 이러한 구현상의 특이사항을 고려하십시오.
NULL 처리
DISTINCT는 NULL을 NULL이 특정 값이며 NULL==NULL인 것처럼 취급합니다. 즉, DISTINCT 결과에서는 NULL을 포함한 서로 다른 조합도 한 번만 나타납니다. 이는 대부분의 다른 문맥에서의 NULL 처리 방식과 다릅니다.
대안
SELECT 절에 지정된 것과 동일한 값 집합에 GROUP BY를 적용해도 동일한 결과를 얻을 수 있습니다. 다만 GROUP BY 방식과 비교하면 몇 가지 차이점이 있습니다.