我有一个用户表格如下:
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' |性别='男性'
感谢。
答案 0 :(得分:2)
[更新:适应问题更新]
您的问题已在插入字段中,您只提供三个值。为此你需要
INSERT INTO users (id, name, email)
VALUES (42, "patrick","patrick@home")
ON DUPLICATE KEY UPDATE name="patrick", email="patrick@home";
但是,如果您的程序确实能够满足您的需求,那么请三思而后行,特别是如果两个传入的请求可能获得相同的新ID。