본문 바로가기
IT/MSSQL

MSSQL 그룹화된 데이터 내에서 순번 업데이트를 통해 다시 정렬하기

by ^&**&^ 2022. 9. 27.
반응형

그룹화된 데이터 내에서 순번을 업데이터를 하기 위해서 ROW_NUMBER() 함수를 사용합니다. 

 

만약 아래와 같은 데이터가 있다고 할 때 '박길동'을 삭제하고 나이순 데이터를 1~4번까지 다시 정렬하여 업데이트를 하고 싶을 수 있습니다. 

아래와 같이 말이죠.

이 때는 MSSQL의 ROW_NUMBER() 함수를 사용하여 업데이트할 수 있습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
WITH UPDATE_DATA AS 
(
    SELECT QueueID, 
           QueueSeq,
           ROW_NUMBER() OVER(ORDER BY QueueSeq ASC) AS SEQ
      FROM Queue
     WHERE 1=1
       AND QueueID = 'queue1'
)
UPDATE Queue 
   SET QueueSeq = SEQ
  FROM Queue AS A
 INNER JOIN UPDATE_DATA AS B
                        ON B.QueueID = A.QueueID
;
 
 
cs

 

위 예제에서는 업데이트를 한 번에 수행하기 위해서 임시 테이블을 만들어서 정렬 값을 임시 테이블에 저장하고 원본 데이터를 업데이터 처리했습니다. 

 

반응형

댓글