我有一个数据库表,它已经有一个我不需要触摸的现有值。当我尝试像这样调用我的 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
有没有办法在不使用更新的情况下做到这一点?
我有一个数据库表,它已经有一个我不需要触摸的现有值。当我尝试像这样调用我的 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
有没有办法在不使用更新的情况下做到这一点?
采用VALUES()
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE col2 = VALUES(col2);
看看这个是一个很好的例子: MySQL: Insert On Duplicate
假设 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)