Sql 涉及三个表的复杂更新

Sql 涉及三个表的复杂更新,sql,postgresql,Sql,Postgresql,我在公司中使用Postgresql作为主要存储,我正在努力实现一个涉及三个不同表的更新查询 以下是模式: 表1有entity_id、entity_type和company_id(引用company.id)列 公司有id列 特殊公司有id(对应于表1.实体id)和公司id(参考company.id) 我想更新表1的所有行,其中Table1.entity\u type='SpecialCompany',以便填写Table1.company\u id,以便: Table1.entity\u id=

我在公司中使用Postgresql作为主要存储,我正在努力实现一个涉及三个不同表的更新查询

以下是模式:

  • 表1有entity_id、entity_type和company_id(引用company.id)列
  • 公司有id列
  • 特殊公司有id(对应于表1.实体id)和公司id(参考company.id)
我想更新表1的所有行,其中
Table1.entity\u type='SpecialCompany'
,以便填写
Table1.company\u id
,以便:

Table1.entity\u id=SpecialCompany.id和SpecialCompany.company\u id=company.id

我开始这样做:

UPDATE Table1 
SET company_id = (select c.id 
                  FROM company c 
                  INNER JOIN special_company w ON c.id=w.company_id 
                  WHERE w.id=709) 
WHERE entity_type='SpecialCompany' AND entity_id=709;
但是我不能用所有的
Table1.entity\u id
where
Table1.entity\u type='SpecialCompany'
替换
709


任何帮助都将不胜感激。

我想您正在寻找类似的东西

update  t
set t.company_id=c.id
from 
 Company C 
 INNER JOIN special_company w ON c.id=w.company_id 
 INNER JOIN Table1 t on t.entity_id=w.entity_id
 Where t.entity_type = 'SpecialCompany'

我猜你在找这样的东西

update  t
set t.company_id=c.id
from 
 Company C 
 INNER JOIN special_company w ON c.id=w.company_id 
 INNER JOIN Table1 t on t.entity_id=w.entity_id
 Where t.entity_type = 'SpecialCompany'

我正在回答我的问题,因为我找到了解决方案:


更新表1 t
设置公司id=c.id
来自c公司
c.id上的内部连接特殊公司w=w.company\U id 哪里 t、 实体类型='SpecialCompany'和t.entity id=w.id;


谢谢@Krishna的帮助

我正在回答我的问题,因为我找到了解决方案:


更新表1 t
设置公司id=c.id
来自c公司
c.id上的内部连接特殊公司w=w.company\U id 哪里 t、 实体类型='SpecialCompany'和t.entity id=w.id;


谢谢@Krishna的帮助

谢谢你的帮助。执行此操作时,第一行出现错误:
UPDATE t SET^************错误*******错误:关系“t”不存在SQL状态:42P01字符:112
感谢您的帮助。这样做,在第一行给了我一个错误:
UPDATE t SET^************错误*********错误:关系“t”不存在SQL状态:42P01字符:112
我没有时间研究这个问题。我的查询在MSSQL中工作。我不知道这是专为博士后准备的。对不起,我没有时间调查此事。我的查询在MSSQL中工作。我不知道这是专为博士后准备的。很抱歉。