MySQL: INSERT ON DUPLICATE KEY UPDATE 并非所有字段

MySQL: INSERT ON DUPLICATE KEY UPDATE not all the fields

我有一个用户 table 如下:

id --- name --- email --- gender

id 列既是主键又是唯一键。在这里,我想用新的姓名和电子邮件信息更新行,但我不必更改他们的性别。我尝试使用查询更新 table:

INSERT INTO USERS VALUES(id, name, email) ON DUPLICATE KEY UPDATE name=VALUES(name), email=VALUES(email);

它没有工作并提醒为:

Column count doesn't match value count at row 1

例如,假设我们有一行如下:

id=1 | name='Mike' | email='mike@mike.com' | gender='male'

如何使用重复键更新将名称更改为 'Michael'?

id=1 | name='Michael' | email='mike@mike.com' | gender='male'

谢谢。

[更新:适应问题更新]

您的问题已经出现在插入字段中,您只提供了三个值。为此你需要

INSERT INTO users (id, name, email) 
VALUES (42, "patrick","patrick@home") 
ON DUPLICATE KEY UPDATE name="patrick", email="patrick@home";

但是如果你的程序真的做了你想要的,还是要三思,特别是如果两个传入的请求有可能获得相同的新 ID。