我想插入包含特定值的行的行,如果不存在则更新它。
具体地:
数据库中存在列user_id=5, user_zip=12345, distance=600
。
如果我尝试插入user_id=5, user_zip=12345, distance=700
,则应该只更新distance
但是我尝试插入user_id=5, user_zip=67890, distance=800
它应该插入一个新行。
我无法定义列user_zip
和distance
唯一,因此我可以使用重复键更新。
答案 0 :(得分:3)
我认为你误解了ON DUPLICATE KEY UPDATE
的工作原理。对(user_id, user_zip)
采用唯一约束,这应该有效:
INSERT INTO yourTable (user_id, user_zip, distance) VALUES (5,12345,600)
ON DUPLICATE KEY UPDATE distance=600;
您不必定义user_zip unique(这就是我理解您的问题的方式),只需user_id
和user_zip
的组合。因此,您仍然可以使用相同user_id
的2行或更多行,只有user_zip
在这些行上无法匹配。