使用第三个表中的相互ID重新连接两个sql表

时间:2013-12-12 12:00:46

标签: sql postgresql join alter-table

假设我们有三个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查询或一个提示,它将帮助我基于{{A重新映射到B 1}}在他们两个。

因此,我需要根据共同c_id为A中的每一行b_id中的B中的一个c_id添加,并为每一行插入。

业务规则只是在有更多({1}}时使用它们。

之后我会删除表b_id中的c_id

1 个答案:

答案 0 :(得分:1)

我认为会:

UPDATE A  
SET b_id = t.b_ID
FROM (select min(id) as b_Id,c_id FROM B Group by c_id ) AS t
WHERE A.c_id = t.c_id 

SQLFiddle demo