繁体   English   中英

SQL Server:更新同一表中具有依赖项的行

[英]SQL Server: Updating rows with dependencies in the same table

这里有CSBaumkontakt表,在这个表中我已经联系了人员和公司。 CSBaumkontakt是一个像这样的树结构:

[+] master company (Root)
  [+] company (Dad)
    [+] contact person 

联系人的公司( Dad )与公司的DadPubIndexRelPubIndex连接。 并且仅当公司的DadRoot与联系人的Root相同时,该应用程序才能正常运行。 这意味着联系人的RootPubIndex必须与公司的DadPubindexRootPubindex相同。 但这并非总是如此。

更改请参见下图:

联系人

[RelPubIndex] [9FC6CD387AE91B46A471E1B82963E36A]
[RooPubIndex] [F7BC36A0-AD4F-49D5-B4FC-AD529C7EA738]
[DadPubIndex] [2143640C-3ABF-440C-B094-2128F4495874]
[class] [contact person]

联系人的公司

[RelPubIndex] [2143640C-3ABF-440C-B094-2128F4495874]  
[RootPubIndex] [D66035CB-B7AD-4D54-9FC7-AE6E7F32662D]  
[DadPubIndex] [D66035CB-B7AD-4D54-9FC7-AE6E7F32662D]
[class] [company]

更改前的CSBaumkontakt

更改 ,它看起来像这样:

联系人

[RelPubIndex] [9FC6CD387AE91B46A471E1B82963E36A]
[RooPubIndex] [D66035CB-B7AD-4D54-9FC7-AE6E7F32662D]
[DadPubIndex] [2143640C-3ABF-440C-B094-2128F4495874]
[class] [contact person]

联系人的公司

[RelPubIndex] [2143640C-3ABF-440C-B094-2128F4495874]  
[RootPubIndex] [D66035CB-B7AD-4D54-9FC7-AE6E7F32662D]  
[DadPubIndex] [D66035CB-B7AD-4D54-9FC7-AE6E7F32662D]
[class] [company]

在此处输入图片说明

现在我需要一个UPDATE脚本设置RooPubIndex每个联系人到的DadPubindex / RootPubIndex (如果是相同的,但它通常应该是这样)从其公司。

我有点不知所措,如何连接同一表中的那些行以用所需的值UPDATE记录。 我该怎么做?

我想我已经解决了。 仍然需要检查数据,但似乎可行。

update csbaum1 set csbaum1.rootpubindex = csbaum2.DadPubIndex  
from CSBaumKontakt as csbaum1  
inner join CSBaumKontakt as csbaum2 
on csbaum1.DadPubIndex = csbaum2.RelPubIndex  
where csbaum1.Klasse = 'contact person'  
and csbaum1.RootPubIndex <> csbaum2.DadPubIndex  
and csbaum2.RootPubIndex = csbaum2.dadpubindex

谢谢阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM