【问题标题】:MySQL REPLACE and DUPLICATE KEY not giving sum of column valueMySQL REPLACE 和 DUPLICATE KEY 没有给出列值的总和
【发布时间】:2013-03-05 16:24:27
【问题描述】:

我有以下格式的表 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;  

【问题讨论】:

    标签: mysql replace key sql-update duplicates


    【解决方案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

    【讨论】:

    • 哦,是的。非常感谢。你是最好的。我试图连续整理这最后 24 小时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多