MySQL 如何在MySQL中使用INSERT INTO .. ON DUPLICATE KEY UPDATE处理多个数据

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 …语句则适用于多行数据的插入。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程