我认为这很容易解决,但我遇到了麻烦。我正在将记录插入到具有自动递增ID的表中。在重复密钥更新时,我希望自动递增ID保持不变(不更新)。例如,假设我有下表:
+-------------+-----------+------+
| ID | Fruit | Color|
+-------------+-----------+------+
| 1 | Apple | Red |
| 2 | Apple | Green|
+-------------+-----------+------+
然后我跑:
INSERT INTO table (Fruit, Color) VALUES(
Apple, Red)
由于我的唯一键是(Fruit,Color)(也是ID是一个单独的键),所以当我的表更新时,我希望ID列保持原样(ID = 1);但是,当我插入上面的值时,ID会自动递增到3。
有人可以提供ON DUPLICATE KEY UPDATE语句,以防止ID值在更新时增加吗?
INSERT INTO table (Fruit, Color) VALUES(
Apple, Red)
ON DUPLICATE KEY UPDATE (
{statement here})
答案 0 :(得分:1)
您可以使用以下查询,如果您的(水果,颜色)是唯一键
,它将起作用INSERT INTO table (Fruit, Color) VALUES(Apple, Red)
ON DUPLICATE KEY UPDATE
Fruit=values(Fruit),Color=values (Color)
答案 1 :(得分:1)
必须使主键成为ID列,然后将(Fruit,Color)设置为唯一键。然后你可以在下面运行@Andrew B Anthony提供的查询:
INSERT INTO table (Fruit, Color) VALUES
Apple, Red)
ON DUPLICATE KEY UPDATE
Fruit=values(Fruit),
Color=values (Color)