MySQL 如何使用MySQL union从两个表合并创建新表?
在MySQL中,有时需要从不同的表中选择数据并将其合并到一张新表中。这时可以使用MySQL的UNION语句来实现。本文将介绍如何使用MySQL union从两个表合并创建新表。
阅读更多:MySQL 教程
UNION语句简介
UNION语句可以将两个或多个SELECT语句的结果集组合成一个结果集。UNION语句的一般语法如下:
SELECT column1, column2, ... FROM table1
UNION [ALL]
SELECT column1, column2, ... FROM table2
UNION语句默认会去重,如果需要保留重复的记录,可以在UNION后添加ALL。需要注意的是,两个SELECT语句必须返回相同数量和类型的列,否则将会出现语法错误。
创建两个表
我们首先需要创建两张表,用于后面的示例。
CREATE TABLE table1 (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL
);
CREATE TABLE table2 (
id INT PRIMARY KEY,
age INT NOT NULL
);
INSERT INTO table1 (id, name) VALUES (1, 'John');
INSERT INTO table1 (id, name) VALUES (2, 'Mary');
INSERT INTO table1 (id, name) VALUES (3, 'Bob');
INSERT INTO table2 (id, age) VALUES (1, 25);
INSERT INTO table2 (id, age) VALUES (2, 30);
INSERT INTO table2 (id, age) VALUES (4, 35);
创建完两个表后,分别插入了一些测试数据。
使用UNION合并两个表
下面我们来合并两个表,并将结果存入一个新表中。我们需要先创建一个新表,然后执行SELECT语句并使用INSERT INTO将结果插入新表。
CREATE TABLE new_table (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
age INT NOT NULL
);
INSERT INTO new_table (id, name, age)
SELECT id, name, NULL AS age FROM table1
UNION
SELECT id, NULL AS name, age FROM table2;
上述语句中,我们使用SELECT语句选择了两个表的数据,并使用NULL填充缺失的列。最后,使用INSERT INTO将结果插入到新表中。
在上述的示例代码中,使用了 NULL AS age 和 NULL AS name 来填充缺失的列。
结果验证
我们需要验证一下新建的新表里面是否成功创建,并输出查询结果,如下代码所示:
SELECT * FROM new_table;
结论
在本文中,我们介绍了如何使用MySQL union从两个表合并创建新表。我们通过创建两个表,并使用UNION语句将它们的内容合并到一个新表中实现了这个目标。如果你需要将多个表进行合并,也可以使用同样的方法。