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。
我有一个用户 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。