我想基于链接表parent更新baby的字段。如果任何链接的婴儿的parent.optin = 1,则需要将baby.optin值设置为1。

这是我目前正在尝试为一位父母(id为11)运行查询的查询

UPDATE parent p
INNER JOIN baby b
    ON p.id = b.parent_id
    AND b.optin = 1
SET p.optin=b.optin
WHERE p.id = 11


父母有2个婴儿,一个选择加入,一个没有选择。目前,我的查询未将p.optin设置为1。

示例数据:

父级

+----+-------+-------+
| id | name  | optin |
+----+-------+-------+
| 11 | dave  | 0     |
+----+-------+-------+


宝宝

+----+-----------+---------+-------+
| id | parent_id | name    | optin |
+----+-----------+---------+-------+
| 2  | 1         | jane    | 0     |
| 3  | 1         | freddie | 1     |
+----+---------------------+-------+


使用以上数据,我想将Parent.optin值设置为1,因为freddie的optin值为1。如果freddie的optin值为0,则parent.optin也将为0。

最佳答案

我想你试试这个。如果您无法解决错误,请告诉我。

UPDATE parent p, baby b
INNER JOIN baby b ON p.id = b.parent_id
SET p.optin=b.optin
WHERE p.id = 11 AND b.optin = 1


谢谢。

关于mysql - 使用JOIN更新基于链接表的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33635965/

10-10 13:14