📅  最后修改于: 2023-12-03 15:38:37.958000             🧑  作者: Mango
在SQL中,我们可以使用UNION操作符将两张表追加,并将结果放入一个表中。下面是详细的介绍。
UNION操作符用于合并两个或多个SELECT语句的结果集,并去除重复行。语法如下:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
UNION操作符会对两个SELECT语句的结果集进行合并,并去除重复行,如果要包含重复行可以使用UNION ALL操作符。
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2;
假设有两张表:table1
和table2
,它们的结构和数据如下:
table1
| id | name | age | | -- | ---- | --- | | 1 | Tom | 18 | | 2 | Jack | 20 | | 3 | Lucy | 22 |
CREATE TABLE table1 (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
age INT(11),
PRIMARY KEY (id)
);
INSERT INTO table1 (name, age) VALUES ('Tom', 18);
INSERT INTO table1 (name, age) VALUES ('Jack', 20);
INSERT INTO table1 (name, age) VALUES ('Lucy', 22);
table2
| id | name | age | | -- | ---- | --- | | 4 | Mary | 19 | | 5 | John | 21 | | 6 | Lily | 23 |
CREATE TABLE table2 (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
age INT(11),
PRIMARY KEY (id)
);
INSERT INTO table2 (name, age) VALUES ('Mary', 19);
INSERT INTO table2 (name, age) VALUES ('John', 21);
INSERT INTO table2 (name, age) VALUES ('Lily', 23);
通过使用UNION操作符,我们可以将两个表追加成一个结果集,并去除重复行。
SELECT * FROM table1
UNION
SELECT * FROM table2;
结果如下:
| id | name | age | | -- | ---- | --- | | 1 | Tom | 18 | | 2 | Jack | 20 | | 3 | Lucy | 22 | | 4 | Mary | 19 | | 5 | John | 21 | | 6 | Lily | 23 |
如果需要保留所有行,包括重复行,可以使用UNION ALL操作符。
SELECT * FROM table1
UNION ALL
SELECT * FROM table2;
结果如下:
| id | name | age | | -- | ---- | --- | | 1 | Tom | 18 | | 2 | Jack | 20 | | 3 | Lucy | 22 | | 4 | Mary | 19 | | 5 | John | 21 | | 6 | Lily | 23 |
如果需要将结果插入一个新表中,可以使用CREATE TABLE语句创建一个新表,然后使用INSERT INTO语句将结果插入新表中。
CREATE TABLE table3 (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
age INT(11),
PRIMARY KEY (id)
);
INSERT INTO table3
SELECT * FROM table1
UNION
SELECT * FROM table2;
本文介绍了如何使用UNION和UNION ALL操作符将两个表追加成一个结果集,并将结果插入到一个新表中。在实际应用中,可以根据具体的需求选择合适的操作符。