问题
我有一张包含parent_id
和 的表child_id
,它们互斥,因此自然它们应该只是一个值,而不是两个。我需要将它们替换为external_id
。
因此,任何子 ID 现在都将成为外部 ID,并且任何父 ID 也将成为外部 ID。
我怎样才能让 postgres 将 id 转换为新列?
混乱的潜在解决方案
我唯一想到的就是通过几个非常混乱的步骤来完成这一任务,但我希望有更好的方法:
创建新列,
external_ids
。将所有子代和父代 ID(即使它们为空)打印到一系列 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);