使用JOIN基于链接的表更新表

时间:2015-11-10 17:26:48

标签: mysql join sql-update

我想根据链接表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。

1 个答案:

答案 0 :(得分: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

感谢。