Postgres에 기존 값을 새 값으로 변환하도록 어떻게 지시합니까?

Postgres에 기존 값을 새 값으로 변환하도록 어떻게 지시합니까?

문제

parent_id과 가 있는 테이블이 있고 child_id상호 배타적이므로 당연히 두 값이 아닌 하나의 값이어야 합니다. 나는 그것들을 external_id.

따라서 모든 하위 ID는 이제 외부 ID가 되고 모든 상위 ID도 외부 ID가 됩니다.

ID를 새 열로 변환하기 위해 postgres를 어떻게 얻을 수 있습니까?

지저분하고 잠재적인 솔루션

마음에 떠오르는 유일한 것은 이 작업을 몇 가지 매우 지저분한 단계로 수행하는 것이지만 더 나은 방법이 있기를 바랍니다.

  1. CREATE새 열, external_ids.

  2. 일련의 UPDATE 문자열에 null인 경우에도 모든 하위 및 상위 ID를 인쇄합니다.

    UPDATE table SET external_id = "<parent or child id>" WHERE row_id = <row_id>
    
  3. 각 업데이트 문자열을 개별적으로 실행하면 시간이 많이 걸릴 수 있으므로 더 나은 방법이 있어야 한다고 생각합니다.

답변1

병합 기능을 확인하십시오.

 UPDATE table SET external_id = coalesce( parent_id, child_id);

관련 정보