본문 바로가기
DB 지식/mssql지식

[SQL Server / MS-SQL] 중복 데이터 삭제 /PK 없는 테이블 중복 데이터 제거

by 몽일! 2024. 1. 17.

본론으로 바로들어가자면,

중복되는 컬럼 삭제하는 쿼리문은 아래로 

DELETE tb
  FROM (

          SELECT 
                idx = ROW_NUMBER() OVER (
                           PARTITION BY idx ORDER BY idx )
            FROM testtable
       ) tb
 WHERE tb.idx > 1;

 select*from testtable order by idx desc;

idx는 중복되는 값이 들어있는 컬럼으로 이를 기준으로 삭제할것이다.

여기서 

          SELECT 
                idx = ROW_NUMBER() OVER (
                           PARTITION BY idx ORDER BY idx )
            FROM testtable

는 


중복되는 컬럼에 각 갯수를 매겨주는 
가 



라고 데이터가 들어있다고 하면 각2개씩으로 중복이고 
저 코드의 결과는 아래와 같다.
1
2
1
2

결국 저코드의 결과값이 1보다 크면 삭제 즉, 중복되는 데이터 중 1개만 남기고 삭제하는 쿼리문인것이다.