SQL结果合并

在实际的数据分析和处理过程中,经常会遇到需要合并不同表的数据结果的情况。SQL提供了多种方式来实现数据合并,例如使用UNION、UNION ALL等操作符。本文将详细讨论SQL中如何将不同表的查询结果合并成一个结果集。
UNION操作符
在SQL中,UNION操作符用于合并两个查询的结果集,并去除重复的行。具体语法如下所示:
SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2;
在这个示例中,我们从table1和table2中选取column1和column2,并将两个查询结果合并成一个结果集。
示例
假设我们有一个学生表和一个教师表,它们的结构如下所示:
Student表
| id | name | grade |
|---|---|---|
| 1 | Alice | A |
| 2 | Bob | B |
| 3 | Carol | A |
Teacher表
| id | name | subject |
|---|---|---|
| 1 | Mr. X | Math |
| 2 | Ms. Y | English |
现在我们希望将学生表和教师表的姓名和所在班级/科目合并成一个结果集,可以使用如下SQL语句:
SELECT name, grade
FROM Student
UNION
SELECT name, subject
FROM Teacher;
运行以上SQL语句后,得到的结果如下:
| name | grade |
|---|---|
| Alice | A |
| Bob | B |
| Carol | A |
| Mr. X | Math |
| Ms. Y | English |
从结果可以看出,UNION操作符将两个查询结果合并,并去除了重复的行。
UNION ALL操作符
与UNION不同,UNION ALL操作符会保留重复的行。具体语法如下所示:
SELECT column1, column2
FROM table1
UNION ALL
SELECT column1, column2
FROM table2;
示例
继续以上面的示例,如果我们希望保留重复的行,可以使用UNION ALL操作符:
SELECT name, grade
FROM Student
UNION ALL
SELECT name, subject
FROM Teacher;
运行以上SQL语句后,得到的结果如下:
| name | grade |
|---|---|
| Alice | A |
| Bob | B |
| Carol | A |
| Mr. X | Math |
| Ms. Y | English |
| Mr. X | Math |
| Ms. Y | English |
从结果可以看出,UNION ALL操作符保留了重复的行。
结语
SQL提供了UNION和UNION ALL操作符来实现不同表查询结果的合并。根据具体需求,可以选择使用不同的操作符来达到合并数据的目的。
极客教程