如何告訴 Postgres 將現有值轉換為新值?

如何告訴 Postgres 將現有值轉換為新值?

問題

我有一張表,其中有parent_idchild_id,它們是互斥的,所以它們自然應該只是一個值,而不是兩個。我需要將它們替換為external_id.

因此,任何子 id 現在都將成為外部 id,並且任何父 id 也將成為外部 id。

如何讓 postgres 將 id 轉換為新列?

凌亂,潛在的解決方案

我唯一想到的就是通過幾個非常混亂的步驟來執行此操作,但我希望有更好的方法:

  1. 建立一個新列,external_ids.

  2. 列印所有子 ID 和父 ID,即使它們為 null 到一系列 UPDATE 字串中,例如

    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);

相關內容