728x90
SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶다면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 사용하는 방법 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다. GROUP BY를 사용하면 속도가 조금 빠르다는 얘기가 있으나 큰 차이를 느끼지 못했다.
GROUP BY를 사용해야 할 특별한 경우가 아니면 중복 행을 제거할 때는 DISTINCT를 사용할 것을 권장한다. DISTINCT를 사용해도 중복을 제거한 결과가 오름차순으로 정렬되어서 조회된다. (SQL Server 2019)
■ DISTINCT를 사용하여 중복 제거
SELECT DISTINCT deptno, job
FROM emp
WHERE deptno in (20, 30)
![]() |
중복 행이 제거되고 deptno, job 두 개의 컬럼이 오름차순으로 정렬되어 조회된다.
■ ORDER BY 절을 사용하여 정렬 변경
SELECT DISTINCT deptno, job
FROM emp
WHERE deptno in (20, 30)
ORDER BY job
![]() |
조회된 결과를 임의로 정렬을 변경하고 싶다면 ORDER BY 절을 사용하면 된다.
단, SELECT 절에 없는 컬럼으로 정렬을 할 수 없다. 중복된 행을 제거 시 사용된 컬럼 외에 다른 컬럼으로 정렬이 필요할 경우 GROUP BY 절을 사용해야 한다. (아래 참조)
■ GROUP BY 절을 사용하여 중복 제거
SELECT deptno, job
FROM emp
WHERE deptno in (20, 30)
GROUP BY deptno, job
![]() |
GROUP BY 절을 사용해도 DISTINCT와 동일한 결과가 조회된다.
■ 중복 제거 시 SELECT 절에 없는 컬럼으로 정렬
SELECT deptno, job, MAX(sal) AS sal
FROM emp
WHERE deptno in (20, 30)
GROUP BY deptno, job
ORDER BY sal
![]() |
GROUP BY 절을 사용하여 중복 행을 제거할 경우 그룹 함수를 사용하여 최댓값(MAX) 또는 최솟값(MIN)을 추출하여 정렬을 변경할 수 있다. 그룹 함수를 사용했기 때문에 조회된 결과 건수는 동일하다.
참고 : https://gent.tistory.com/439?category=874679
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] UPDATE 문 사용법 3가지 (데이터 수정) (0) | 2022.11.04 |
---|---|
[MSSQL] INSERT 문 사용법 3가지 (데이터 입력) (0) | 2022.11.03 |
[MSSQL] 문자열 합치기 (CONCAT, +) (0) | 2022.07.28 |
[MSSQL] 문자열 자르기 (SUBSTRING, LEFT, RIGHT) (0) | 2022.07.25 |
[MSSQL] CASE WHEN 표현식 사용법 (DECODE, IF) (0) | 2022.07.25 |
댓글