MySQL实现多个表数据去重复(mysql 两表去重复)
MySQL实现多个表数据去重复
在MySQL数据库中,如果存在多个表数据存在重复,我们需要将这些重复的数据去重并合并为一张表。这时我们可以通过使用SQL语句来实现,这里我们以主键为关联字段来进行数据去重和合并。
步骤如下:
1.创建两张含有重复数据的表。
创建第一张表:
CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900__ci;
INSERT INTO `table1` (`id`, `name`, `age`) VALUES
(1, ‘张三’, 18),
(2, ‘李四’, 20),
(3, ‘王五’, 22),
(4, ‘张三’, 18),
(5, ‘李四’, 20);
创建第二张表:
CREATE TABLE `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900__ci;
INSERT INTO `table2` (`id`, `name`, `age`) VALUES
(1, ‘赵六’, 25),
(2, ‘李四’, 20),
(3, ‘王五’, 22),
(4, ‘张三’, 18),
(5, ‘钱七’, 23);
2.使用UNION ALL语句将两张表合并。
SELECT * FROM table1
UNION ALL
SELECT * FROM table2;
3.使用GROUP BY语句按照主键字段去重。
SELECT DISTINCT id, name, age
FROM (
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
) AS t
GROUP BY id;
执行上述SQL语句后,可以得到不含重复数据的结果集。其中GROUP BY语句会按照主键字段(这里是id)对结果集进行去重,确保输出结果集中不含有重复的数据。
通过这种方式,我们可以轻松地将多张含有重复数据的表去重,得到一张不含重复数据的表。当然,在实际的开发中,我们同样可以通过编写程序实现数据去重和合并的功能。能够让程序能够更方便快捷地完成数据操作。