我有两个字段的表 - userId和
我有这个问题:
INSERT INTO users VALUES ('$userId', '$something')
ON DUPLICATE KEY UPDATE something='$something'
WHERE userId='$userId'
为什么这不起作用?如果我删除
WHERE userId='$userId'
然后它可以工作,但它会更新所有行,我显然不想为每个userId更新相同的信息。
userId
字段在数据库中设置为UNIQUE。
答案 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)