gpt4 book ai didi

mysql - 根据父单元格值更新 id

转载 作者:行者123 更新时间:2023-11-29 13:16:15 26 4
gpt4 key购买 nike

我问了一个问题,我有一个可行的解决方案,但我需要一点调整

这是我问的问题:

我有一个像这样的数据库

表名称:人

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

我需要查询我的数据库,其中我将所有 person.id 更新为 HIV“已清除”,如果 mother_id 和father_id 都已清除 HIV,请注意,我需要能够选择标记 child 的单词,所以这个不会与 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

我得到的解决方案看起来像这样 - 这有效,但是

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';

我需要进行一些调整,以便我能够询问是否

mother_id 和father_id = 已清除或清除

我认为这并不那么容易:

       update person p join
person father
on father.id = p.father_id and father.HIV = 'Clear' OR 'Cleared' join
person mother
on mother.id = p.mother_id and mother.HIV = 'Clear' OR 'Cleared'
set p.HIV = 'ParentsClear';

最佳答案

虽然它基本上“很简单”,但您需要括号并且您应该将选择器放在 WHERE 子句中而不是连接中。这使得在典型部署中查询速度更快。尝试类似的事情

UPDATE person AS child
INNER JOIN person AS father
ON father.id = child.father_id
INNER JOIN person AS mother
ON mother.id = child.mother_id
SET child.HIV = 'ParentsClear'
WHERE
mother.HIV IN ('Clear','Cleared')
AND father.HIV IN ('Clear', 'Cleared')

关于mysql - 根据父单元格值更新 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21420109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com