Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 删除中间表_Sql_Postgresql - Fatal编程技术网

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