Oracle两个结果集合并

在Oracle数据库中,可以使用UNION运算符来合并两个结果集。UNION运算符用于将两个SELECT语句的结果集合并为一个结果集,但是需要注意的是,两个SELECT语句返回的列数和数据类型必须完全相同。
语法
UNION运算符的语法如下:
SELECT 列名1, 列名2, ...
FROM 表名1
WHERE 条件
UNION
SELECT 列名1, 列名2, ...
FROM 表名2
WHERE 条件
示例
假设我们有两个表,一个是学生表(student),一个是教师表(teacher),它们的结构如下:
student表结构
| 学生ID(student_id) | 学生姓名(student_name) | 年龄(age) |
|---|---|---|
| 1 | 小明 | 18 |
| 2 | 小红 | 20 |
| 3 | 小华 | 19 |
teacher表结构
| 教师ID(teacher_id) | 教师姓名(teacher_name) | 科目(subject) |
|---|---|---|
| 1 | 张老师 | 数学 |
| 2 | 王老师 | 英语 |
| 3 | 李老师 | 物理 |
现在我们想要将学生表和教师表的结果合并成一个结果集,包括学生姓名、年龄和教师姓名、科目。我们可以使用如下SQL语句:
SELECT student_name AS 姓名, age AS 年龄, NULL AS 教师姓名, NULL AS 科目
FROM student
UNION
SELECT NULL AS 姓名, NULL AS 年龄, teacher_name AS 教师姓名, subject AS 科目
FROM teacher;
在上面的SQL语句中,我们对学生表和教师表进行了两次查询,并通过UNION运算符将两个结果集合并成一个结果集。其中,第一个SELECT语句返回学生表的学生姓名和年龄,并且用NULL代替教师姓名和科目;第二个SELECT语句返回教师表的教师姓名和科目,并且用NULL代替学生姓名和年龄。
运行结果
运行上面的示例代码后,我们会得到如下合并后的结果集:
| 姓名 | 年龄 | 教师姓名 | 科目 |
|---|---|---|---|
| 小明 | 18 | NULL | NULL |
| 小红 | 20 | NULL | NULL |
| 小华 | 19 | NULL | NULL |
| NULL | NULL | 张老师 | 数学 |
| NULL | NULL | 王老师 | 英语 |
| NULL | NULL | 李老师 | 物理 |
上面的结果集中,前三行是学生表的数据,后三行是教师表的数据,通过UNION运算符将两个结果集合并在一起。
总而言之,通过使用UNION运算符,我们可以在Oracle数据库中将两个结果集合并为一个结果集,从而方便进行数据分析和处理。
极客笔记