
문제
parent_id
과 가 있는 테이블이 있고 child_id
상호 배타적이므로 당연히 두 값이 아닌 하나의 값이어야 합니다. 나는 그것들을 external_id
.
따라서 모든 하위 ID는 이제 외부 ID가 되고 모든 상위 ID도 외부 ID가 됩니다.
ID를 새 열로 변환하기 위해 postgres를 어떻게 얻을 수 있습니까?
지저분하고 잠재적인 솔루션
마음에 떠오르는 유일한 것은 이 작업을 몇 가지 매우 지저분한 단계로 수행하는 것이지만 더 나은 방법이 있기를 바랍니다.
CREATE새 열,
external_ids
.일련의 UPDATE 문자열에 null인 경우에도 모든 하위 및 상위 ID를 인쇄합니다.
UPDATE table SET external_id = "<parent or child id>" WHERE row_id = <row_id>
각 업데이트 문자열을 개별적으로 실행하면 시간이 많이 걸릴 수 있으므로 더 나은 방법이 있어야 한다고 생각합니다.
답변1
병합 기능을 확인하십시오.
UPDATE table SET external_id = coalesce( parent_id, child_id);