使用DB2中的parent,子条件更新同一个表的值

时间:2015-07-17 06:40:43

标签: db2 db2-luw

我在DB2中有一个表,它有父和子。在同一个表上的子关系,如何使用父关系更新子列。

示例:

update table1 
set    col1 = (select col2 from table2 where id='14') 
where  table1.id=table2.parent

1 个答案:

答案 0 :(得分:1)

看起来你可能已经指定了你的条件混乱。我假设您要更改第14行上col1的值,并且您希望它具有其父级col2的值。

所以外部语句UPDATE应该有一个WHERE子句,指定要更新的行 - id = 14的那个。当我们引用这个表的引用时,我们将使用它的昵称。我选择了一个单个字母的昵称,' u'表示我们要更新的行。

我猜测id列是数字,在这种情况下不应该引用它。 (id上的u限定符是可选的,因为UPDATE语句的WHERE子句中没有歧义。为了清楚起见,我只是添加了它。)

将放在col1中的值来自子查询中的col2。我们希望从id与要更新的行中的父列匹配的行中获取它。此记录也在表1中,但为了区分此表引用与其他表,我将给它起一个昵称' p',表示父行。

update table1 as u
  set col1 = (select col2 
                from table1 as p
                where p.id = u.parent
             )
  where u.id = 14

我使用了"昵称",但正确的术语是"相关名称"。