
問題
我有一張表,其中有parent_id
和child_id
,它們是互斥的,所以它們自然應該只是一個值,而不是兩個。我需要將它們替換為external_id
.
因此,任何子 id 現在都將成為外部 id,並且任何父 id 也將成為外部 id。
如何讓 postgres 將 id 轉換為新列?
凌亂,潛在的解決方案
我唯一想到的就是通過幾個非常混亂的步驟來執行此操作,但我希望有更好的方法:
建立一個新列,
external_ids
.列印所有子 ID 和父 ID,即使它們為 null 到一系列 UPDATE 字串中,例如
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);