MSSQL - 使用自查找更新表

时间:2013-12-02 14:08:00

标签: sql sql-server

所以我有一张表如下;

id, title, application_number, parent_application_number, parent_case_id
2, 'asd', 'P1234', 'lkjh', null
3, 'qwe', 'adsqwe', 'P1234', 3

我知道这看起来令人困惑,但我会尽力解释它。 我基本上需要查看当前行的parent_case_id,并执行查询以找出哪个行将此字段作为应用程序编号,并将ID更新为parent_case_id。

到目前为止,我有这个,有人可以指出我正确的方向吗?

UPDATE guest.exported_cases
    set parent = 
          (CASE a.child
               WHEN '' THEN ''
               WHEN NULL THEN ''
               else (select id from guest.exported_cases b where b.child = a.child)
          END)
    FROM guest.exported_cases a;

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用join查找每个孩子的父行:

update child
set    parent = parent.id
from   YourTable child
join   YourTable parent
on     parent.child = child.id
where  child.parent is null -- Does not currently have a parent

这将根据父级的子列设置子级的父列。