Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 对唯一映射密钥的某些部分进行重复密钥更新时使用_Mysql_On Duplicate Key - Fatal编程技术网

Mysql 对唯一映射密钥的某些部分进行重复密钥更新时使用

Mysql 对唯一映射密钥的某些部分进行重复密钥更新时使用,mysql,on-duplicate-key,Mysql,On Duplicate Key,我的表格如下所示 ItemAttMapID ItemAttributeID VendorID vItemID Qty 1 4 1 2 60 2 4 2 3 10 3 3 5

我的表格如下所示

   ItemAttMapID    ItemAttributeID    VendorID    vItemID    Qty
        1                4               1           2       60
        2                4               2           3       10
        3                3               5           5       20
在此表中,
ItemAttMapID
auto\u increment
primary\u键

ItemAttributeID、VendorID、VItemID是
唯一映射

我使用了以下查询

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  
我想更新第三个数字行,但它正在向表中插入一条新记录

如何使用重复密钥更新实现此目的

编辑:

我只想检查,如果
VendorID
vItemID
已经存在,则使用重复密钥更新更新记录(而不是
ItemAttributeID


因为如果我将
ItemAttributeID
VendorID
vItemID
一起放在查询中,那么它会更新记录,否则它会插入新记录。

为什么不检查exists并执行if语句以进行更新和插入?实际上我正在使用它。。。但是想在重复密钥更新时使用它吗