使用现有值重复更新密钥的问题?

时间:2012-06-15 19:43:59

标签: mysql

我有一个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

有没有办法在不使用更新的情况下完成此任务?

3 个答案:

答案 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)

DEMO