SQL中叠加两个行集可以通过UNION和UNION ALL两种操作实现。以下是详细的攻略:
UNION操作
UNION操作将两个SELECT语句返回的结果集合并成一个结果集,去除重复的部分,但不会保留重复记录的数量。
下面是一个实例,查询所有学生和教师的名字并合并成一个结果集:
SELECT name FROM students
UNION
SELECT name FROM teachers;
这段代码中的UNION操作会将学生和教师的名字合并成一个结果集。如果学生和教师中有名字相同的记录,则只会保留一条。如果要保留重复的记录可以使用UNION ALL操作。
UNION ALL操作
UNION ALL操作将两个SELECT语句返回的结果集合并成一个结果集,包含重复的部分,保留重复记录的数量。
下面是一个实例,查询所有学生和教师的名字并合并成一个结果集,并保留重复记录:
SELECT name FROM students
UNION ALL
SELECT name FROM teachers;
这段代码中的UNION ALL操作会将学生和教师的名字合并成一个结果集,并保留重复的记录。
注意:在使用UNION和UNION ALL操作时,两个SELECT语句返回的结果集必须具有相同的列数和数据类型。
示例
假设我们有两个表:
students表
id | name | age |
---|---|---|
1 | Tom | 20 |
2 | Lucy | 21 |
3 | Jack | 22 |
teachers表
id | name | subject |
---|---|---|
1 | Mr. Zhang | Math |
2 | Mrs. Wang | English |
3 | Ms. Liu | History |
现在我们想要查询学生和教师的名字和他们的身份:
SELECT name, 'Student' as identity FROM students
UNION ALL
SELECT name, 'Teacher' as identity FROM teachers;
运行以上代码,得到以下结果:
name | identity |
---|---|
Tom | Student |
Lucy | Student |
Jack | Student |
Mr. Zhang | Teacher |
Mrs. Wang | Teacher |
Ms. Liu | Teacher |
以上就是SQL叠加两个行集的完整攻略,包括UNION和UNION ALL两种操作的讲解以及示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 叠加两个行集 - Python技术站