MySQL REPLACE和DUPLICATE KEY不给出列值的总和

时间:2013-03-17 06:14:23

标签: mysql replace key sql-update duplicates

我的表格格式为StoreID | ItemID | ItemName |数量StoreID和ItemID是Pkeys.Im尝试执行mysql查询并插入StoreID ='ST1'ItemsID ='IT1'ItemName ='IT'Qty = 1000但是这里我想插入记录如果不存在,如果存在则更新Qty =数量+ 100.我尝试使用mysql替换和重复密钥更新。它做我想做的事情,除了数量没有增加。下面的两个查询在第一次执行时将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;  

1 个答案:

答案 0 :(得分: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