我有下一个查询:
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,我不知道这是否是problem...if
发布于 2014-01-27 17:36:36
为了使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`);https://stackoverflow.com/questions/21387150
复制相似问题