0

我有以下格式的表 StoreID | 物品编号 | 物品名称 | 数量。StoreID 和 ItemID 是 Pkeys。我正在尝试执行 mysql 查询并插入 StoreID ='ST1' ItemID ='IT1' ItemName='IT' Qty=1000 但是在这里我想插入记录,如果不存在,如果存在更新 Qty =数量+ 100。我尝试使用 mysql Replace into 和 Duplicate key update。它做了我想做的事情,除了数量没有增加。第一次执行时,下面的两个查询都将 Qty 设置为 0。我可以理解那是因为第一次没有重复的条目。我想要做的是添加记录(如果不存在给定数量)并在之后每次执行时仅更新数量

INSERT INTO Store_Items (storeID, itemId,itemName)  
VALUES ('STR004', '4534','K40')  
ON DUPLICATE KEY UPDATE currentStock = currentStock + 100;  


REPLACE INTO Store_Items  
        SET storeID ='STR004',  
         itemId='4534',  
         itemName='K40',  
         SUM(currentStock) as 'Total',  
         reorderLevel=1000;  
4

1 回答 1

1

如果我理解正确,您的查询应该如下所示

INSERT INTO Store_Items (storeID, itemId, itemName, Qty)  
VALUES ('STR004', '4534','K40', 100)  
ON DUPLICATE KEY UPDATE Qty = IFNULL(Qty, 0) + 100;

第一次插入后:

+---------+--------+----------+------+
| storeID | itemId | itemName | Qty  |
+---------+--------+----------+------+
| STR004  |   4534 | K40      |  100 |
+---------+--------+----------+------+

第二次插入后:

+---------+--------+----------+------+
| storeID | itemId | itemName | Qty  |
+---------+--------+----------+------+
| STR004  |   4534 | K40      |  200 |
+---------+--------+----------+------+

SQLFiddle

于 2013-03-17T06:42:38.673 回答