MySQL 如何在MySQL中使用INSERT INTO .. ON DUPLICATE KEY UPDATE处理多个数据
在MySQL中,我们可以使用INSERT INTO .. ON DUPLICATE KEY UPDATE来处理重复数据。在单个数据插入时,这是一个很有用的方法。不过,如果需要同时插入多个数据,该怎么办?这篇文章将介绍如何在MySQL中使用INSERT INTO .. ON DUPLICATE KEY UPDATE处理多个数据。
阅读更多:MySQL 教程
准备工作
首先,我们需要一个表格来测试。下面是一个简单的students表:
id | name | age | grade |
---|---|---|---|
1 | Jack | 18 | 90 |
2 | Lily | 16 | 85 |
3 | Tom | 17 | 92 |
假设现在我们有一个包含同样字段的students_new表格,需要将数据从students表格复制到students_new表格。
处理单行数据
对于单行数据,我们可以直接使用多个INSERT … ON DUPLICATE KEY UPDATE语句来处理。例如:
INSERT INTO students_new (id, name, age, grade) VALUES (1, 'Jack', 18, 90)
ON DUPLICATE KEY UPDATE name='Jack', age=18, grade=90;
INSERT INTO students_new (id, name, age, grade) VALUES (4, 'Mike', 15, 80)
ON DUPLICATE KEY UPDATE name='Mike', age=15, grade=80;
这两个语句会将id为1的行从students表格复制到students_new表格,并更新id为4的行数据。若新行(即id=4)不存在,则会按照VALUES语句内容插入一条新行。
处理多行数据
对于多行数据,我们可以使用INSERT INTO … SELECT … ON DUPLICATE KEY UPDATE。这个语句可以用来插入一批值,当重复主键时更新并忽略插入重复的行。
例如,我们将用students表格中id大于等于2的行插入到students_new表格中:
INSERT INTO students_new (id, name, age, grade)
SELECT id, name, age, grade FROM students WHERE id >= 2
ON DUPLICATE KEY UPDATE name = VALUES(name), age = VALUES(age), grade = VALUES(grade);
这个语句会将id大于等于2的行从students表格复制到students_new表格,同时处理重复数据。如果出现重复数据,则会根据UPDATE子句更新数据。
总结
在MySQL中使用INSERT INTO .. ON DUPLICATE KEY UPDATE处理多个数据,可以通过多个INSERT … ON DUPLICATE KEY UPDATE语句或INSERT INTO … SELECT … ON DUPLICATE KEY UPDATE语句实现。多个语句对于单行数据较为适用,而使用SELECT … INSERT INTO …语句则适用于多行数据的插入。