본론으로 바로들어가자면,
중복되는 컬럼 삭제하는 쿼리문은 아래로
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개만 남기고 삭제하는 쿼리문인것이다.
'DB 지식 > mssql지식' 카테고리의 다른 글
MSSQL 테이블 목록 조회 쿼리 (0) | 2024.01.29 |
---|---|
MSSQL/ SQL Server - 서버 정보 저장하기 (0) | 2024.01.24 |
mssql 날자형식 지정/ 데이터 형식지정 /날짜 포맷 (1) | 2024.01.03 |
mssql 에서 mysql 에서의 Limit 처럼 사용하는 방법 (1) | 2024.01.03 |