MySQL 表合并去重是指将两个或多个表中的数据合并到一个表中,并去除重复的数据行。这在数据整合、数据清洗等场景中非常常见。
假设我们有两个表 table1 和 table2,它们都有一个共同的字段 id,我们希望将这两个表合并,并去除重复的行。
-- 创建示例表
CREATE TABLE table1 (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
CREATE TABLE table2 (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
-- 插入示例数据
INSERT INTO table1 (id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO table1 (id, name, age) VALUES (2, 'Bob', 30);
INSERT INTO table2 (id, name, age) VALUES (2, 'Bob', 30);
INSERT INTO table2 (id, name, age) VALUES (3, 'Charlie', 35);
-- 合并表并去重
SELECT * FROM table1
UNION
SELECT * FROM table2;原因:可能是由于 UNION 操作符默认会去除重复行,但如果使用 UNION ALL,则不会去除重复行。
解决方法:确保使用 UNION 而不是 UNION ALL。
SELECT * FROM table1
UNION
SELECT * FROM table2;原因:可能是由于在合并过程中,某些字段在其中一个表中没有匹配的行,导致该字段值为 NULL。
解决方法:使用 LEFT JOIN 或 RIGHT JOIN 时,确保所有需要的字段都在结果集中。
SELECT t1.id, t1.name, t1.age, t2.age AS age_from_table2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id;通过以上方法,可以有效地解决 MySQL 表合并去重中的常见问题。
没有搜到相关的文章