我在DB2中有一个表,它有父和子。在同一个表上的子关系,如何使用父关系更新子列。
示例:
update table1
set col1 = (select col2 from table2 where id='14')
where table1.id=table2.parent
答案 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
(我使用了"昵称",但正确的术语是"相关名称"。)