在SQL中迭代并更新表

时间:2012-05-12 13:55:26

标签: mysql sql

我有一个名为person_relation

的表格
Id  | ParentId    |  ChildId  | PersonId    
-------------------------------------------
1   |    null     |  2        |   null     
-------------------------------------------
2   |     1       |  3        |   null      
-------------------------------------------
3   |     2       |  4        |    122
-------------------------------------------
4   |     3       |  null     |    122
-------------------------------------------

这4行属于id为122的一个人。 我正在努力更新PersonId列;前两行应该有122作为PersonId。


Id  | ParentId    |  ChildId  | PersonId    
-------------------------------------------
1   |    null     |  2        |   null     
-------------------------------------------
2   |     1       |  3        |   null      
-------------------------------------------
3   |     2       |  4        |    122
-------------------------------------------
4   |     3       |  null     |    122
-------------------------------------------
5   |    null     |  6        |   123
-------------------------------------------
6   |     5       |  7        |   null      
-------------------------------------------
7   |     6       |  8        |    123
-------------------------------------------
8   |     7       |  null     |    null   
-------------------------------------------

现在桌子有两个人,他们的ids是122和123.它可能有很多人。 所以上面的回复都行不通。因此,我们需要一种迭代方法来更新这些行。

3 个答案:

答案 0 :(得分:1)

update person_relation 
set personid = 122
where personid is null

答案 1 :(得分:0)

Juergen的回答将完成工作,但我愿意打赌你的数据集不仅限于这四行。我会做一些更安全的事情:

update person_relation
set PersonId = 122
where Id IN (1,2)

答案 2 :(得分:0)

在parent_id中应该存在关系..如果其中4个属于家庭。然后他们的孩子应该将parentID列值作为父母ID号...(在这种情况下为1或2)。并且我想知道如果父ID是 null ,如果它们属于同一个家庭,那么它们是什么?

如果父母的身份证明是正确的,那么你可以正确更新孩子的人身ID。