작동버젼 : MSSQL 2000 이상
사용방법 : []안의 내용 수정 후 사용
주의사항 : 만일의 경우를 위하여 테이블을 SELECT INTO 등으로 백업 후 사용하며
IDENTITY컬럼이 이미 있는 경우 임시 테이블에 값을 넣어 처리 후 대체
설 명 : 중복되는 ROW중 IDENTITY컬럼값이 가장 작은 녀석만 남고 삭제 하는 쿼리기 때문에
원하는 순서로 정렬된 Identity 컬럼 추가 을 참조하여 남아야 할 키 값의 IDENTITY값을 가장 작게 만들것!
DECLARE @TableName sysname DECLARE @KeyColumns varchar(256) SET @TableName = '[테이블명]'; SET @KeyColumns = '[기본키컬럼명1],[기본키컬럼명2],[기본키컬럼명3]'; DECLARE @Query nvarchar(4000); SET @Query = N'ALTER TABLE ' + @TableName + ' ADD TempKeyColumn int IDENTITY(1,1)'; EXECUTE sp_executesql @Query; SET @Query = N'DELETE ' + @TableName + ' WHERE TempKeyColumn NOT IN (SELECT MIN(TempKeyColumn) AS TempKeyColumn FROM ' + @TableName + ' GROUP BY ' + @KeyColumns + ')'; EXECUTE sp_executesql @Query; SET @Query=N'ALTER TABLE ' + @TableName + ' DROP COLUMN TempKeyColumn;'; EXECUTE sp_executesql @Query; GO
'프로그래밍 > MSSQL\스크립트' 카테고리의 다른 글
[MSSQL] 로그인과 유저 간의 연결 수정 (0) | 2012.04.30 |
---|---|
[MSSQL] 특정 계정으로 로그인된 모든 세션 Kill (0) | 2012.04.29 |
[MSSQL] IP String <-> IP Binary (0) | 2012.04.24 |
[MSSQL] DB의 모든 테이블의 Collation 변경 (0) | 2012.04.24 |
[MSSQL] CSV 파일을 임시 테이블에 저장 (0) | 2012.04.24 |