0

我有一个数据库表,它已经有一个我不需要触摸的现有值。当我尝试像这样调用我的 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

有没有办法在不使用更新的情况下做到这一点?

4

3 回答 3

1

采用VALUES()

INSERT INTO sometable (id, col2) VALUES (5, 20)
   ON DUPLICATE KEY UPDATE col2 = VALUES(col2);
于 2012-06-15T19:45:45.980 回答
0

看看这个是一个很好的例子: MySQL: Insert On Duplicate

于 2012-06-15T19:53:55.810 回答
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 的建议使用 COL2 = VALUES(COl2)

演示

于 2012-06-15T19:58:27.103 回答