Sql 删除中间表
鉴于下表:Sql 删除中间表,sql,postgresql,Sql,Postgresql,鉴于下表: Table1 | id | intermediate_id | Itermediate | id | Table2 | id | intermediate_id | table1_id| 如何使用Table1.ids更新Table2? 我正在尝试以下方法: update Table2 set table1_id = (select table1.id from table1 where table1.intermediate_id = table2.intermedia
Table1
| id | intermediate_id |
Itermediate
| id |
Table2
| id | intermediate_id | table1_id|
如何使用Table1.ids更新Table2?
我正在尝试以下方法:
update Table2
set table1_id =
(select table1.id
from table1
where table1.intermediate_id = table2.intermediate_id);
这给了我“错误:作为表达式使用的子查询返回的多行”您的错误是,在
表1
的多行上存在一个中间id
。在这种情况下,您试图将多个table1.id
值推送到单个table2.table1\u id
字段中。尝试从表1 GROUP BY intermediate_id have COUNT(*)>1
中选择intermediate_id,COUNT(*)以查找此类事件。中间表是否允许多:多关系?(您的数据正确吗?)?(你的数据不正确吗?)是的,你是对的,这是多对多关系。我正努力做到一对一。谢谢。然后,在运行update语句之前,您需要将数据修改为1:1(或1:many,这是您的新关系当前允许的)。好的,我接受这一点来结束问题,但问题在于表之间的实际关系。
update Table2
set table1_id = table1.id
from table1
where table1.intermediate_id = table2.intermediate_id