插入重复更新,始终插入

时间:2014-01-27 17:11:01

标签: mysql

我有下一个查询:

Insert into tableA (userID, switch, plateType, groupVal, brokeage) 
Select 'UserB', switch, plateType, groupVal, brokeage from tableA  where userID = 'UserA' 
      on duplicate key Update brokeage = (Select brokeage from tableA  where userID = 'UserA')

tableA的主键是一个名为id的字段,它是唯一且自动递增的。 此查询的问题在于,当行已存在时,它始终插入而不是更新。我不在查询中使用id,我不知道这是不是问题...如果有人对我有答案,谢谢。

1 个答案:

答案 0 :(得分:0)

为了进行ON DUPLICATE KEY操作,MySQL需要知道它已尝试插入认为唯一的列的副本。这不仅涉及PRIMARY KEY,而且涉及您认为唯一的任何列组合。由于您担心userID, plateType, groupVal的组合是唯一的,因此为这三列创建复合索引。然后,您的INSERT INTO...ON DUPLICATE KEY UDPATE应该按预期工作。

这将为您现有的表添加正确的唯一索引。当在INSERT上找到列组合时,MySQL将采取ON DUPLICATE KEY操作。

ALTER TABLE `tableA` ADD UNIQUE KEY `idx_user_plate_group` (`userID`, `plateType`, `groupVal`);
相关问题