我有一个查询,如果该行尚不存在则更新表或插入,但由于某种原因,它只是一直插入。
这是我的表结构:
Id (primary) | uid | product_id | quantity
这是我的疑问:
INSERT INTO my_table (uid,product_id,quantity)
SELECT t1.uid,?,?
FROM checker t1
WHERE t1.id = ?
ON DUPLICATE KEY UPDATE
product_id = ?, quantity = quantity+?
我想要做的是,如果表格中已存在on duplicate key
组合,则使用uid + product_id
。
那么有没有办法指定要更新哪种副本而不是插入?
答案 0 :(得分:1)
无法区分发生的重复。
一旦违反任何唯一约束,它就会执行ON DUPLICATE KEY UPDATE
部分。
对于您的情况,您只需要创建由2个字段组成的唯一复合键:(uid, product_id)