我在MySQL中有2个表,它们是:
正如您在上面的图片中看到的那样,Item Code
和General Inventory
的{{1}}字段Purchase Order
的前4行是表格中的相同和第5行{{ 1}}不在表Purchase Order
中。现在我的问题是如何实现这一目标? (下图)
正如您在表General Inventory
和Quantity
的字段General Inventory
上的数据上方的图片上看到的那样,因为字段Purchase Order
下的前面数据相同1}}表中添加了最后一个没有相同值的值。
让我缩短问题。
如果Item Code
字段中的数据相同,我如何从General Inventory
Quantity
的{{1}}字段中汇总数据,否则添加新数据如果来自Purchase Order
的{{1}}中的数据不存在。
我尝试了这段代码。
General Quantity
,输出就是这个
现在我尝试了第二个代码
Item Code
输出就是这个。
数据已被重复,而Purchase Order
将被添加。
答案 0 :(得分:1)
首先使用LEFT JOIN
,您可以将不匹配的行插入GeneralInventory表
INSERT INTO GeneralInventory (ItemCode, `Description`, Quantity)
SELECT PO.ItemCode, PO.`Description`, PO.Quantity
FROM PurchaseOrder PO
LEFT JOIN GeneralInventory GI ON GI.ItemCode = PO.ItemCode AND GI.`Description` = PO.`Description` AND GI.Quantity = PO.Quantity
WHERE GI.ItemCode IS NULL
然后你可以通过加入表来更新GeneralInventory的Quantity值
UPDATE GeneralInventory GI
INNER JOIN PurchaseOrder PO ON GI.ItemCode = PO.ItemCode AND GI.`Description` = PO.`Description` AND GI.Quantity = PO.Quantity
SET GI.Quantity = GI.Quantity + PO.Quantity