0

我有两个字段的表 - userId 和一些东西

我有这个查询:

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

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

WHERE userId='$userId' 

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

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

4

2 回答 2

2

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

正确的语法如下:

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

没有WHERE涉及。

请阅读MySQL 参考资料insert... on duplicate key update


引用我上面提供的链接:

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

于 2013-10-10T21:22:23.857 回答
0
INSERT INTO users1 VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something=
IF(userId='$userId','$something',something)
于 2013-10-10T21:26:14.947 回答