首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他两个表更新第三个表列

根据其他两个表更新第三个表列
EN

Stack Overflow用户
提问于 2015-08-13 19:04:05
回答 3查看 119关注 0票数 2

我有3个表,结构如下:

代码语言:javascript
复制
 ______________
| ContractInfo |
|--------------|
| ContractId   |
| QuotationId  |
| SupplierId   |
|______________|

 ____________
| Quotation  |
|------------|
| Id         |
| ContractId |
|____________|

 ___________________________________
| QuotationInfo                     |
|-----------------------------------|
| QuotationId (References Quotation)|
| SupplierId                        |
|___________________________________|

我希望将SupplierId的值从ContractInfo复制到QuotationInfoSupplierId列,如果QuotationIdQuotationInfo等于Quotation的Id,并且ContractIdContractInfo等于<代码>D11的<代码>D10。

例如,

假设ContractInfo有以下数据:

代码语言:javascript
复制
ContractId  QuotationId SupplierId  
C-1         Q-1         S-1
C-2         Q-2         S-2

假设Quotation有以下数据:

代码语言:javascript
复制
Id   ContractId
Q-1  C-1
Q-2  C-2

假设QuotationInfo有以下数据:

代码语言:javascript
复制
QuotationId SupplierId
Q-1         NULL
Q-2         NULL

在update查询之后,QuotationInfo SupplierId列应按如下方式填充:

代码语言:javascript
复制
QuotationId SupplierId
Q-1         S-1
Q-2         S-2

我真的不明白我如何做到这一点。寻求帮助来实现我所描述的目标。如果不是完整的解决方案,一些提示也会很有帮助。

EN

回答 3

Stack Overflow用户

发布于 2015-08-13 19:16:36

尝试使用合并

代码语言:javascript
复制
merge into QuotationInfo qf
using
(
select cf.SupplierId,cf.QuotationId  from 
ContractInfo cf 
inner join
Quotation Q 
on
cf.ContractId=Q.contractid
and 
cf.QuotationId  =q.id                   
)t 
on
(t.QuotationId=qf.QuotationId )
when matched then
update set qf.SupplierId=t.SupplierId   
票数 1
EN

Stack Overflow用户

发布于 2015-08-13 19:16:44

假设QuotationId对于ContractInfo是唯一的,您可以使用子查询将SupplierIdContractInfo复制到QuotationInfo

代码语言:javascript
复制
update QuotationInfo t1
set SupplierId = (select SupplierId
    from ContractInfo t2
    where t2.QuotationId = t1.QuotationId)
票数 1
EN

Stack Overflow用户

发布于 2015-08-13 19:18:13

代码语言:javascript
复制
UPDATE QuotationInfo qi
SET qi.SupplierId = ci.SupplierId
FROM QuotationInfo qi
INNER JOIN Quotation q ON q.Id = qi.QuotationId
INNER JOIN ContractInfo ci ON ci.ContractId = q.ContractId
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31986441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档