我有两张桌子:
产品(P1)

id,
amount

价格(P2)
id
productId
calibre
amount

我想更新P1amount列,使其等于每个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/

10-14 04:23