MySQL 如何使用MySQL union从两个表合并创建新表?

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语句将它们的内容合并到一个新表中实现了这个目标。如果你需要将多个表进行合并,也可以使用同样的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程