我有两张桌子:
产品(P1)
id,
amount
价格(P2)
id
productId
calibre
amount
我想更新P1
amount
列,使其等于每个amount
的P2productId
列的总和。例如,来自
P1号
'apple',0
'orange,0
P2页
'apple', 'A', 5
'apple', 'B', 6
'orange' 'AA',1
'orange' 'BBB', 3
'orange', 'CCC', 4
更新后,P1如下:
'apple', 11
'orange', 8
我找不到实现此目的的SQL语法。
如果有人知道。。。
谢谢您。
最佳答案
由于您没有标记您的DBMS,我认为这对大多数DBMS都是正确的:
UPDATE P1
SET p1.amount = (SELECT sum(p2.amount) FROM P2
WHERE p1.productID = p2.productID)
如果p1可以有不会出现在p2中的产品,则应该使用nvl函数-每个dbms都可以有不同的函数来处理nulls-coalesce、nvl等。。。然后将总和(p2.金额)更改为:
COALESCE(sum(p2.amount),0)
NVL(sum(p2.amount),0)
选择一个适合你的
关于mysql - SQL:从另一个分组表更新表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35865436/