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语句以进行更新和插入?实际上我正在使用它。。。但是想在重复密钥更新时使用它吗