【问题标题】:SQL Server: Updating rows with dependencies in the same tableSQL Server:更新同一个表中具有依赖关系的行
【发布时间】:2018-02-23 11:00:06
【问题描述】:

CSBaumkontakt 的表格,在这张表格中我有联系人和公司。 CSBaumkontakt 是这样的树形结构:

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

联系人的公司 (Dad) 与其DadPubIndex 和来自公司的RelPubIndex 相关联。只有当公司的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]

修改后如下所示:

联系人

[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 具有所需值的记录。我怎样才能做到这一点?

【问题讨论】:

  • 这里的大多数人想要格式化的文本,而不是图像。 (而且我无法阅读那个微小的图像文本......)
  • @jarlh:我添加了格式化文本。

标签: sql sql-server sql-update


【解决方案1】:

我想我已经找到了解决方案。仍然需要查看数据,但似乎可行。

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

感谢阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多