0

我有如下所示的表格

   ItemAttMapID    ItemAttributeID    VendorID    vItemID    Qty
        1                4               1           2       60
        2                4               2           3       10
        3                3               5           5       20

在这张表中ItemAttMapIDauto_increment primary_key

并且ItemAttributeID, VendorID, VItemIDUnique Mapping

我使用了以下查询

INSERT INTO `client`.`mapping`  
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)  

VALUES  
(NULL, 4, '2', '3', '70'),  
(NULL, 3, '5', '5', '80')  
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);

它给了我想要的正确结果,但是当我使用以下查询而不是更新特定记录时,它会插入新记录。

INSERT INTO `client`.`mapping`  
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)  

VALUES  
(NULL, 2, '5', '5', '80')  
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);

表的变化是这样的

   ItemAttMapID    ItemAttributeID    VendorID    vItemID    Qty
        1                4               1           2       60
        2                4               2           3       10
        3                3               5           5       20
        4                2               5           5       80  

我想要更新第三个数字行,但它正在向表中插入一条新记录。

如何使用 ON DUPLICATE KEY UPDATE 来实现这一点。

编辑:

我只想检查,如果VendorID并且vItemID已经存在,然后ItemAttributeID使用 ON DUPLICATE KEY UPDATE 更新记录( NOT THE )。

因为如果我将ItemAttributeID相同的内容放在VendorIDvItemID查询中,那么它会更新记录,否则它会插入新记录。

4

0 回答 0