1、union 和union all
union 和union all 都是用于操作两个或多个select 语句结果集合并,并要求两个结果集查询的数据项相同,顺序一致;区别是union all 返回的是所有结果,union 返回的是去重后的结果。也就是说union相当于对union all 操作的结果集去重。值得注意的是如果查询语句中使用order by 语句(排序)需要放到所有句子后面
使用方法:
select 字段名称 from 表1
union
select 字段名称 from 表2
order by id
2、minus
minus 是减的意思,在oracle语句中是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。
使用方法:
select 字段名称 from 表1
minus
select 字段名称 from 表2
3、举例
表 semester1
id | name | subjects | fraction |
001 | 张三 | 数学 | 35 |
002 | 张三 | 语文 | 61 |
003 | 李四 | 数学 | 80 |
004 | 李四 | 语文 | 88 |
005 | 王五 | 数学 | 99 |
006 | 王五 | 语文 | 99 |
表 semester2
id | name | subjects | fraction |
001 | 张三 | 数学 | 45 |
002 | 李四 | 语文 | 68 |
003 | 王五 | 数学 | 99 |
004 | 赵六 | 数学 | 34 |
select name from semester1 where subjects = '数学'
张三 |
李四 |
王五 |
select name from semester2 where subjects = '数学'
张三 |
王五 |
赵六 |
select name from semester1 where subjects = '数学'
union
select name from semester2 where subjects = '数学'
张三 |
李四 |
王五 |
赵六 |
select name from semester1 where subjects = '数学'
union all
select name from semester2 where subjects = '数学'
张三 |
张三 |
李四 |
王五 |
王五 |
赵六 |
select name from semester1 where subjects = '数学'
minus
select name from semester2 where subjects = '数学'
李四 |
select name from semester2 where subjects = '数学'
minus
select name from semester1 where subjects = '数学'
赵六 |