oracel union 并集 查询
时间: 2024-01-27 15:05:55 浏览: 80
Oracle中的UNION操作符用于将两个或多个SELECT语句的结果集合并为一个结果集。它返回所有SELECT语句的结果,并去除重复的行。
示例:
假设有两个表A和B,它们的结构和数据如下:
表A:
| id | name |
|----|-------|
| 1 | Alice |
| 2 | Bob |
| 3 | John |
表B:
| id | name |
|----|---------|
| 4 | Alice |
| 5 | David |
| 6 | Michael |
现在我们想要查询A表和B表的name列,我们可以使用UNION操作符将它们的结果合并为一个结果集:
SELECT name FROM A
UNION
SELECT name FROM B;
执行以上SQL语句的结果为:
| name |
|---------|
| Alice |
| Bob |
| David |
| John |
| Michael |
注意:UNION操作符默认去除重复行。如果需要保留重复行,可以使用UNION ALL操作符。
相关问题
oracle交集 并集 差集
Oracle中的集合操作包括并集、交集和差集。其中并集可以使用UNION和UNION ALL关键字实现,UNION ALL不去重,效率高,而UNION去重,效率低;交集使用INTERSECT关键字实现;差集使用MINUS关键字实现。在进行集合操作时,各个列的数据类型必须对应,保持一致,否则会报错提示。下面是一个示例:
```
with a as (
select 1 sno, 'a' sname from dual
union all
select 2 sno, 'b' sname from dual
), b as (
select 1 sno, 'a' sname from dual
union all
select 3 sno, 'c' sname from dual
)
select a.sno, a.sname, 'a' source from a
union all -- 并集(去重、排序)
-- intersect 交集
-- minus 差集
select b.sno, b.sname, 'b' source from b;
```
oracle UNION ALL 的案例
UNION ALL是Oracle中用于合并两个或多个SELECT语句结果集的关键字。它与UNION的区别在于,UNION ALL不会去除重复的行,而是将所有行包括重复的行都返回。以下是一个使用UNION ALL的简单示例:
假设我们有两个表,表1和表2,它们包含相同的列名和数据类型。我们可以使用以下SELECT语句将两个表的数据合并到一个结果集中:
```sql
SELECT column1, column2, column3 FROM table1
UNION ALL
SELECT column1, column2, column3 FROM table2;
```
这个查询将返回两个表中所有行的并集,包括重复行。
另一个使用UNION ALL的示例是将两个不同的查询结果组合成一个结果集。例如,以下查询将返回所有客户和订单的信息:
```sql
SELECT customer_name, address, phone FROM customers
UNION ALL
SELECT customer_name, billing_address, phone FROM orders;
```
这个查询将返回所有客户和订单的信息,包括重复的信息。
需要注意的是,如果两个结果集的列数不同或列的数据类型不同,则无法使用UNION ALL将它们合并。此外,由于UNION ALL不会去除重复的行,因此如果不需要重复行,则应使用UNION语句。
阅读全文