DB
[SQL] UPDATE 시 ROW_NUMBER() 함수 사용하기
땅부자몽구스
2021. 7. 3. 16:44
데이터가 이미 들어있는 테이블을 장고 ORM에 쓰려고 하는데 PK로 지정된 컬럼이 없다는 오류가 발생했다.
그래서 급하게 id 컬럼을 추가하고 ROW_NUMBER() 함수를 통해 id 값을 업데이트하였다.
이 때 구글링으로 찾아서 사용한 SQL문은 아래와 같다.
가정
1. a라는 테이블에 이름과 전화번호 컬럼이 존재한다.
2. 이름을 오름차순으로, 이름이 같은 경우에는 전화번호를 오름차순으로 해서 행 번호를 id 컬럼 값으로 UPDATE한다.
사용한 DBMS는 PostgreSQL이다.
UPDATE a
SET id = x.id
FROM
(SELECT
name
, phone_number
, ROW_NUMBER() OVER (ORDER BY name, phone_number) AS id
FROM a
ORDER BY name, phon_number) x
where a.name = x.name and a.phone_number = x.phone_number