Programming

🚀 MSSQL에서 중복 데이터 처리(중복 제거 및 찾기) 완벽 가이드

quantoasis 2025. 3. 20. 11:38
반응형

MSSQL을 사용할 때 중복 데이터는 성능 저하뿐만 아니라 데이터 분석의 신뢰성을 떨어뜨릴 수 있습니다. 이번 포스팅에서는 MSSQL에서 중복 데이터를 쉽고 빠르게 처리하는 방법을 소개하겠습니다. ✅


🎯 1. 중복 데이터 찾기

중복 데이터를 찾을 때는 GROUP BYHAVING 절을 활용하면 쉽게 확인할 수 있습니다.

-- 중복 데이터 찾기 예시
SELECT column1, column2, COUNT(*) AS 중복횟수
FROM table_name
GROUP BY column1, column2
HAVING COUNT(*) > 1;

✅ 위 쿼리는 중복된 컬럼 값과 해당 값이 중복된 횟수를 표시합니다.


🎯 2. 중복 데이터 제거하기 (삭제 방법)

중복 데이터 삭제는 주로 CTE(Common Table Expression)ROW_NUMBER()를 결합하여 사용합니다.

📌 CTE와 ROW_NUMBER() 사용하여 중복 삭제

-- 중복 데이터 삭제 예시
WITH CTE AS (
    SELECT *, ROW_NUMBER() OVER (
        PARTITION BY column1, column2
        ORDER BY (SELECT NULL)
    ) AS 중복순번
    FROM table_name
)
DELETE FROM CTE WHERE 중복순번 > 1;

✅ 위 방법은 각 중복 데이터 중 첫 번째 행만 남기고 나머지는 삭제합니다.


🎯 3. 중복 데이터 방지하기

데이터를 입력할 때 중복 데이터를 방지하려면, 테이블에 UNIQUE 제약조건을 설정하면 효과적입니다.

-- 테이블 생성 시 중복 방지
CREATE TABLE table_name (
    ID INT PRIMARY KEY,
    column1 VARCHAR(50),
    column2 VARCHAR(50),
    CONSTRAINT unique_column1_column2 UNIQUE (column1, column2)
);

✅ 위와 같이 UNIQUE 제약조건을 설정하면 중복 데이터를 사전 방지할 수 있습니다.


🎯 4. 실전 예제 (중복 조회 및 삭제)

실무에서 자주 사용하는 중복 조회 및 삭제 예제를 보겠습니다.

-- 중복 조회
SELECT email, COUNT(*) AS DuplicateCount
FROM Users
GROUP BY email
HAVING COUNT(*) > 1;

-- 중복 삭제
WITH UserCTE AS (
    SELECT *, ROW_NUMBER() OVER (
        PARTITION BY email
        ORDER BY created_at DESC
    ) AS RowNum
    FROM Users
)
DELETE FROM UserCTE WHERE RowNum > 1;

✅ 위 예제는 이메일로 중복된 사용자 정보를 가장 최근 데이터만 유지하고 나머지는 삭제합니다.


🎯 마무리

MSSQL에서 중복 데이터를 잘 관리하면 데이터베이스 성능과 정확도를 높일 수 있습니다.

  • 중복 조회에는 GROUP BY + HAVING을 활용
  • 중복 삭제는 CTE + ROW_NUMBER() 조합 사용
  • 중복 방지는 UNIQUE 제약조건 설정

📌 중복 데이터 관리를 통해 더 효율적인 데이터베이스 환경을 구축하세요! 🚀


🔖 태그
#MSSQL #중복데이터 #SQL성능최적화 #중복제거 #SQL팁 #데이터베이스관리 #중복데이터찾기

반응형