Oracle合并查询结果
在Oracle数据库中,为了在一个查询中合并多个表或查询结果,可以使用 UNION 和 UNION ALL 操作符。这两个操作符允许将多个查询的结果集合并为一个结果集,但在合并结果时有一些区别。
UNION vs UNION ALL
UNION
UNION 操作符用于合并两个或多个查询的结果集,并返回一个不包含重复行的结果集。如果两个查询的结果集中存在相同的行,则只会返回一次。语法如下:
SELECT 列名称 FROM 表1
UNION
SELECT 列名称 FROM 表2;
UNION ALL
UNION ALL 操作符用于合并两个或多个查询的结果集,并返回一个包含所有行的结果集,包括重复的行。语法如下:
SELECT 列名称 FROM 表1
UNION ALL
SELECT 列名称 FROM 表2;
示例
假设有两个表 table1
和 table2
,分别包含员工的姓名和部门信息。我们想要查询出所有员工的姓名,并将结果合并为一个结果集。下面是示例表结构和数据:
table1
姓名 |
---|
张三 |
李四 |
王五 |
table2
姓名 |
---|
杨六 |
张三 |
王五 |
现在我们分别使用 UNION 和 UNION ALL 进行查询:
UNION 查询
SELECT 姓名 FROM table1
UNION
SELECT 姓名 FROM table2;
运行结果如下:
姓名 |
---|
张三 |
李四 |
王五 |
杨六 |
UNION ALL 查询
SELECT 姓名 FROM table1
UNION ALL
SELECT 姓名 FROM table2;
运行结果如下:
姓名 |
---|
张三 |
李四 |
王五 |
杨六 |
张三 |
王五 |
总结
在Oracle数据库中,通过使用 UNION 和 UNION ALL 操作符,可以实现在一个查询中合并多个表或查询结果。UNION 会自动去重,而 UNION ALL 则会保留所有行,包括重复行。根据实际需求选择合适的操作符进行查询,以获得想要的结果。