Mysql 如果我有一个重复的';其中';领域?

Mysql 如果我有一个重复的';其中';领域?,mysql,sql,key,duplicates,Mysql,Sql,Key,Duplicates,我有一个带有两个字段的表——userId和一些东西 我有一个疑问: INSERT INTO users VALUES ('$userId', '$something') ON DUPLICATE KEY UPDATE something='$something' WHERE userId='$userId' 为什么这不起作用?如果我移除 WHERE userId='$userId' 然后它会工作,但它会更新所有行,我显然不想为每个用户ID更新相同的信息 userId字段在数据库中设置为唯一

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

我有一个疑问:

INSERT INTO users VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something='$something'
WHERE userId='$userId'
为什么这不起作用?如果我移除

WHERE userId='$userId' 
然后它会工作,但它会更新所有行,我显然不想为每个用户ID更新相同的信息


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

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

正确的语法如下所示:

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

请仔细阅读


引用我上面提供的链接:

如果在重复键更新中指定
,并且插入一行,该行将导致
唯一索引或
主键中出现重复值,MySQL将执行旧行的
更新


插入。。。价值观哪里在重复密钥更新…
,顺序很重要(因此,在重复密钥更新…
,不插入…值…,在重复密钥更新…
),请解释不工作的含义。让我猜猜:您收到的消息如下所示:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解可在[something]附近使用的正确语法。是否有任何解决方法?我需要它,我不想更新所有的行,只想更新带有相应用户ID的行。@ToniPerić你读过我提供的链接了吗?这完全符合你的需要!这很好,基本上我所要做的就是从我一开始执行的sql查询中删除“WHERE…”。非常感谢,巴兰卡@ToniPerić请保留MySQL参考手册的副本(或链接)。如果有些东西不能像你期望的那样工作,寻找正确的语法并尝试修复它。
INSERT INTO users1 VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something=
IF(userId='$userId','$something',something)