如果我有'WHERE'字段的副本,如何更新MySQL条目?

时间:2013-10-10 21:13:17

标签: mysql sql key duplicates

我有两个字段的表 - userId和

我有这个问题:

INSERT INTO users VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something='$something'
WHERE userId='$userId'

为什么这不起作用?如果我删除

WHERE userId='$userId' 

然后它可以工作,但它会更新所有行,我显然不想为每个userId更新相同的信息。

userId字段在数据库中设置为UNIQUE。

2 个答案:

答案 0 :(得分:2)

它不起作用,因为你的语法错误。

正确的语法如下:

INSERT INTO yourTable (col1, col2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE non_key_col1 = newValue1;

没有涉及WHERE

请阅读MySQL reference for insert... on duplicate key update


引自我上面提供的链接:

  

如果您指定ON DUPLICATE KEY UPDATE,则会插入一行会导致 UNIQUE 索引中的重复值或 PRIMARY KEY ,MySQL执行旧行的UPDATE

答案 1 :(得分:0)

INSERT INTO users1 VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something=
IF(userId='$userId','$something',something)