2015년 4월 1일 수요일

TOP을 사용하여 삭제되는 행 제한


키 값이 같은 여러 건의 데이터 중 하나만 빼고 다 지우고 싶을때
나같은 경우에는 키 값이 두개라 IN으로 엮을 순 없었고 커서 써서 삭제하는 방식을 썼다
다만 중복 건수가 2건이 넘지 않는걸 알았기에 Top에는 1이라고 박음
만약에 여러건이라면 카운트 값 가져와서 삭제해버리면 되겠지
후아암...

DECLARE @OrdWk as nvarchar(20) = NULL
DECLARE OrderDistinct CURSOR FOR           
SELECT OrdWk  FROM T_Order
WHERE OrdRout <> '구매'
GROUP BY OrdWk
HAVING COUNT(OrdWk) > 1
OPEN OrderDistinct
FETCH NEXT FROM OrderDistinct INTO @OrdWk;
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
DELETE TOP(1)
FROM T_Order
WHERE OrdWk = @OrdWk             
END
FETCH NEXT FROM OrderDistinct INTO @OrdWk           
END
CLOSE OrderDistinct
DEALLOCATE OrderDistinct
GO

댓글 없음 :

댓글 쓰기