【发布时间】:2016-02-11 16:23:49
【问题描述】:
我想根据链接表baby 更新parent 的字段。如果任何链接的婴儿有baby.optin = 1,则需要将parent.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。
【问题讨论】:
-
如果any 相关行是
baby.optin = 0,您的意思是要忽略(不更新)还是仅在all 时才忽略(不更新) i> 相关baby.optin = 0?如果您包含两个表中的一些示例行,以及修改后的parent表将遵循UPDATE的示例,将会有很大帮助。 -
@MichaelBerkowski 我用示例行更新了我的问题,希望更有意义。
标签: mysql join sql-update