我有一个像这样的数据库
表名:人
id name country father_id mother_id HIV
52 bob NULL 68 98 NULL
68 joe Maui 72 14 CLEAR
53 mia NULL 68 98 NULL
51 robbie NULL 68 13 NULL
98 Joyce NULL 13 16 CLEAR
我需要查询我的数据库,如果mother_id和father_id都具有HIV CLEAR,则我将用HIV'CLEARED'更新所有person.id
请注意,我需要能够选择标记孩子的单词,因此该值将与mother_id和Father_id相同。
我需要数据库看起来像这样:
id name country father_id mother_id HIV
52 bob NULL 68 98 CLEAR
68 joe Maui 72 14 CLEAR
53 mia NULL 68 98 CLEAR
51 robbie NULL 68 13 NULL
98 Joyce NULL 13 16 CLEAR
如果这太复杂了,那就不要使用与父母相同的值:P
如果不清除mother_id和father_id,我希望person.id HIV细胞保持为空
请保持简单,因为我是菜鸟:P
最佳答案
这是更新语句:
update person p join
person father
on father.id = p.father_id and father.HIV = 'Clear' join
person mother
on mother.id = p.mother_id and mother.HIV = 'Clear'
set p.HIV = 'ParentsClear';
令我惊讶的是,您可能只想在该字段为空时执行
update
。如果是这样,请在查询中添加where p.HIV is null
。编辑:
我建议您修改表以包含
ParentHIV
字段。我不知道您在做什么,但是有可能对个人的数据和父母的数据感到困惑。这是如何使用此示例:
update person p join
person father
on father.id = p.father_id and father.HIV = 'Clear' join
person mother
on mother.id = p.mother_id and mother.HIV = 'Clear'
set p.ParentHIV = (case when father.HIV = 'Clear' and mother.HIV = 'Clear'
then 'BothClear'
when father.HIV = 'Clear' or mother.HIV = 'Clear'
then 'OneClear'
else 'NeitherClear'
end);
关于mysql - MySQL基于其他2条记录值更改单元格值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21418758/