Mysql如何在一个sql和父sql中更新父子表并使用子表的更新列

Mysql如何在一个sql和父sql中更新父子表并使用子表的更新列,mysql,sql-update,Mysql,Sql Update,我有两张桌子。父母和孩子 父级有列排列数量,子级也有列排列数量 parent.arrange\u quantity=SUMchild.arrange\u quantity 我想在一个sql中更新两个数量。但子查询似乎总是得到旧的child.arrange\u数量值,如何才能得到新的child.arrange\u数量 下面是我的sql: UPDATE child child LEFT JOIN parent parent ON child.`arrange_id`=parent.`id`

我有两张桌子。父母和孩子

父级有列排列数量,子级也有列排列数量

parent.arrange\u quantity=SUMchild.arrange\u quantity

我想在一个sql中更新两个数量。但子查询似乎总是得到旧的child.arrange\u数量值,如何才能得到新的child.arrange\u数量

下面是我的sql:

UPDATE child child 
    LEFT JOIN parent parent ON child.`arrange_id`=parent.`id`
SET child.`arrange_quantity`=11, parent.`arrange_quantity`=(
    SELECT SUM(tmp.arrange_quantity) FROM (SELECT arrange_quantity FROM child WHERE `arrange_id`='PD1509060000225') AS tmp
    )
WHERE 1=1
AND child.`id`=3
在这个sql之后,parent.arrange_数量等于11,现在就对了。但当我想把child.arrangement_数量改为10时

UPDATE child child 
    LEFT JOIN parent parent ON child.`arrange_id`=parent.`id`
SET child.`arrange_quantity`=10, parent.`arrange_quantity`=(
    SELECT SUM(tmp.arrange_quantity) FROM (SELECT arrange_quantity FROM child WHERE `arrange_id`='PD1509060000225') AS tmp
    )
WHERE 1=1
AND child.`id`=3

parent.arrange仍然等于11,而不是更改为10。我应该怎么做?

在更新完成之前必须运行子查询,因为您在更新中使用了子查询的结果。您需要将其作为两个查询来执行。使用事务来确保它们以原子方式完成。谢谢,已经更改为两个sql。