Juuun 이라는 테이블이 존재한다는 가정하에


[방법1]-------------------------------------------------


1. 템프성테이블에 데이터를 옮긴다.

 SELECT * INTO Juuun_Temp  FROM Juuun


2. 테이블의 데이터를 모두 없앤다.

 DELETE FROM  Juuun 

혹은 

 TRUNCATE TABLE Juuun 


3. 테이블에 순번컬럼을 추가하고, Identity값을 부여한다.

 ALTER TABLE Juuun ADD SEQ INT IDENTITY(1,1)


4. 템프성테이블의 데이터를 Juuun 테이블에 다시 넣는다.

 INSERT INTO Juuun (....)

 SELECT .... FROM Juuun_Temp


5. 잘 들어갔는지 확인해보자.

 SELECT *  FROM  Juuun


-------------------------------------------------[방법1]



[방법2]-------------------------------------------------


1. 테이블에  순번컬럼을 추가한다. (만약테이블에 유니크한 컬럼이 없을경우는 임시키컬럼도 추가한다.)

--> 현재 예제에는  유니크한 컬럼이 없다는 가정한 예제이므로, 있을경우는 제외하고 쿼리를 실행한다. ^^*

 ALTER TABLE Juuun ADD SEQ INT IS NULL

 ALTER TABLE Juuun ADD TEMP_KEY VARCHAR(100) IS NULL


2. 키컬럼에 유니크한 값을 업데이트한다.

 UPDATE Juuun SET TEMP_KEY = NEWID() 


3. 임시키컬럼의 값이 유니크한지 확인해보자.(그럴리 없지만 혹시 0.00000000000...1프로라도 존재할지 모르니 확인은 필수~!!)

만약 유니크하지 않다면(3번쿼리를 돌렸을때 행이존재한다면) 2번항을 다시 실행한다.

 SELECT TEMP_KEY, COUNT(*) FROM Juuun GROUP BY TEMP_KEY HAVING COUNT(*) > 1


4. 이제 순번을 업데이트 하자.

 DECLARE @NO INT, @SID VARCHAR(100)

 SET @NO = 1

 

 WHILE (SELECT COUNT(*) FROM Juuun WHERE SEQ IS NULL) > 0

 BEGIN


SELECT TOP 1 @SID = TEMP_KEY FROM Juuun WHERE SEQ IS NULL


UPDATE Juuun 

SET SEQ = @SID

WHERE TEMP_KEY = SID 


SET @NO = @NO + 1


 END


5. 잘 들어갔는지 확인해보자.

 SELECT *  FROM  Juuun ORDER BY SEQ ASC


-------------------------------------------------[방법2]

Posted by 김준홍 (http://www.Juuun.com)