【问题标题】:Reconnecting two sql tables using mutual id from third table使用第三个表中的互 id 重新连接两个 sql 表
【发布时间】: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_idA 重新映射到 B他们。

所以我需要从B 中根据相互c_id 为A 中的每一行获取多个b_id 中的一个,并将其插入每一行。

业务规则说,只要有更多b_id,就可以使用任何(第一个)b_id

之后,我会将c_id 删除到表A 中。

【问题讨论】:

  • 您使用什么 RDBMS(MSSQL、MySQL、Oracle,...)?
  • 嗯,对不起..Postgresql

标签: sql postgresql join alter-table


【解决方案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

【讨论】:

  • 谢谢,你是今天的 Haxor :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
相关资源
最近更新 更多