0

我有一个表,我需要使用另一个表中的数据进行更新。问题是两个表之间没有外键关系。但是,还有第三个表具有这种关系。

以下是表格:

父表:

ParentKey     ParentField
-------------------
 p1           aaa
 p2           bbb
 p3           ccc

子表:

ChildKey     ChildField
-------------------
 c1           ccc
 c2        
 c3

关系表:

ParentKey    ChildKey
-------------------
 p1          c2
 p2          c3
 p3          c1

这就是我想要做的......如果 Child 表在 ChildField 中没有值,那么我想用相应的 ParentField 的值更新 ChildField。所以基本上我的最终结果应该是这样的:

子表:

ChildKey     ChildField
-------------------
 c1           ccc
 c2           aaa
 c3           bbb
4

2 回答 2

2

即使没有外键,您仍然可以将两个表连接在一起进行更新:

update      child
set         childfield = parent.parentfield
from        child
inner join  Relationship on Relationship.ChildKey = Child.ChildKey
INNER JOIN  Parent on PArent.ParentKey = Relationship.ParentKey
WHERE       Child.ChildField IS NULL

这应该在 Microsoft SQL Server 中工作。很确定它也可以在其他地方工作

于 2013-07-08T23:51:38.060 回答
0

这应该适合你;

UPDATE ChildTable ct SET ct.ChildField = 
    (SELECT MAX(ParentField) FROM ParentTable pt 
    INNER JOIN RelationshipTable rt ON rt.ParentKey=pt.ParentKey 
    WHERE rt.ChildKey=ct.ChildKey)
WHERE ct.ChildField IS NULL 

如果您有一个ChieldField空字符串而不是空字符串NULL,请尝试

UPDATE ChildTable ct SET ct.ChildField = 
    ISNULL((SELECT MAX(ParentField) FROM ParentTable pt 
    INNER JOIN RelationshipTable rt ON rt.ParentKey=pt.ParentKey 
    WHERE rt.ChildKey=ct.ChildKey),'')
WHERE ct.ChildField=''
于 2013-07-08T23:49:33.513 回答