Anw*_*war 2 mysql insert duplication update
让我解释 :
让我们假设我们有一个数据库“用户”:
ID Name Surname
===================
1 John Doe
2 Foo Bar
3 Foo Baz
Run Code Online (Sandbox Code Playgroud)
现在我想更改所有这三行。我将抛出以下插入:
INSERT INTO user (ID, Name, Surname) VALUES (1, 'John', 'Conor') ON DUPLICATE KEY UPDATE ID = 1, Name = 'John', Surname = 'Conor';
INSERT INTO user (ID, Name, Surname) VALUES (2, 'Foo', 'Bar') ON DUPLICATE KEY UPDATE ID = 2, Name = 'Foo', Surname = 'Bar';
INSERT INTO user (ID, Name, Surname) VALUES (3, 'Foo', 'Baz') ON DUPLICATE KEY UPDATE ID = 3, Name = 'Foo', Surname = 'Baz';
Run Code Online (Sandbox Code Playgroud)
题
ON DUPLICATE KEY
如果更新前的行相同,该命令是否自行执行?意思是,ID
即使它不应该执行(因为它没用),它是否会为等于 2 和 3的行执行?我问这个问题是为了性能问题。
MySQL 的执行ON DUPLICATE KEY UPDATE
方式与它执行UPDATE
语句的方式相同:
它检查要更新的每一行(和列)的内容,如果它们与提供的内容相同,则不进行任何更新。尽管如此,它仍然必须检查它们。
因此,在您的情况下(您发送 3 行要插入)的结果将是:
关于你的语法的一些事情:
UNIQUE
密钥。 VALUES(column)
在UPDATE
零件中使用。 您可以将多个插入合并为一个:
INSERT INTO user
(ID, Name, Surname)
VALUES
(1, 'John', 'Conor'),
(2, 'Foo', 'Bar'),
(3, 'Foo', 'Baz')
ON DUPLICATE KEY UPDATE
Name = VALUES(Name),
Surname = VALUES(Surname) ;
Run Code Online (Sandbox Code Playgroud)