【发布时间】:2013-12-12 12:00:46
【问题描述】:
假设我们有三个 SQL 表 A、B 和 C:
TABLE A { id, c_id}
TABLE B {id, c_id}
TABLE C {id}
所以 A 和 B 有来自表 C 的外键。我在表 A 中创建了一个将引用表 B 的列:
ALTER TABLE A ADD COLUMN b_id INTEGER;
ALTER TABLE A ADD FOREIGN KEY (b_id) REFERENCES B(id);
所有的表都在生产中并填充了数据。
我需要弄清楚的是如何为每一行填充这个新列,我需要一个 SQL 查询或一个提示来帮助我根据 c_id 将 A 重新映射到 B他们。
所以我需要从B 中根据相互c_id 为A 中的每一行获取多个b_id 中的一个,并将其插入每一行。
业务规则说,只要有更多b_id,就可以使用任何(第一个)b_id。
之后,我会将c_id 删除到表A 中。
【问题讨论】:
-
您使用什么 RDBMS(MSSQL、MySQL、Oracle,...)?
-
嗯,对不起..Postgresql
标签: sql postgresql join alter-table