我有一个DB表,它已经有一个我不需要触及的现有值。当我尝试像这样调用我的SQL时:
我的表目前看起来像这样:
id col1 col2
5 10
$ sql =“INSERT INTO sometable(id,col2)VALUES(5,20) ON DUPLICATE KEY UPDATE id = 5“;
我希望在插入后表格看起来像这样:
id col1 col2
5 10 20
有没有办法在不使用更新的情况下完成此任务?
答案 0 :(得分:1)
使用VALUES()
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE col2 = VALUES(col2);
答案 1 :(得分:0)
检查一下这是一个很好的例子: MySQL: Insert On Duplicate
答案 2 :(得分:0)
假设id是关键
这个
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE id = 5
表示将id字段更新为5(UPDATE ID =5
)。哪个只有在ID为5且没有意义时才有效
你想要的是
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE col2 = 20;
或者,如果您想引用该值,如果没有重复,则使用Wilken suggested COL2 = VALUES(COl2)