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

时间:2015-08-19 18:25:57

标签: mysql insert-update on-duplicate-key

我有一个用户表格如下:

  

id ---姓名---电子邮件---性别

id列是主键和唯一键。在这里,我想使用新名称和电子邮件信息更新行,但我不必更改其性别。我尝试使用查询更新表:

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

它不起作用并提醒:

  

列数与第1行的值计数不匹配

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

  

id = 1 |是name ='迈克' |电子邮件=' mike@mike.com' |性别='男性'

如何使用on-duplicate-key update将名称更改为' Michael'?

  

id = 1 |命名='迈克尔' |电子邮件=' mike@mike.com' |性别='男性'

感谢。

1 个答案:

答案 0 :(得分:2)

[更新:适应问题更新]

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

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

但是,如果您的程序确实能够满足您的需求,那么请三思而后行,特别是如果两个传入的请求可能获得相同的新ID。

相关问题