如果数据不存在,则将数据从一个表传输到另一个表

时间:2016-06-07 02:42:11

标签: mysql vb.net

我在MySQL中有2个表,它们是:

enter image description here

正如您在上面的图片中看到的那样,Item CodeGeneral Inventory的{​​{1}}字段Purchase Order的前4行是表格中的相同和第5行{{ 1}}不在表Purchase Order中。现在我的问题是如何实现这一目标? (下图)

enter image description here

正如您在表General InventoryQuantity的字段General Inventory上的数据上方的图片上看到的那样,因为字段Purchase Order下的前面数据相同

让我缩短问题。

如果Item Code字段中的数据相同,我如何从General Inventory Quantity的{​​{1}}字段中汇总数据,否则添加新数据如果来自Purchase Order的{​​{1}}中的数据不存在。

我尝试了这段代码。

General Quantity

,输出就是这个

enter image description here

现在我尝试了第二个代码

Item Code

输出就是这个。

enter image description here

数据已被重复,而Purchase Order将被添加。

1 个答案:

答案 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