相同:取结果集的并集
不同:union all展示重复数据,不排序;union不展示重复行,使用默认规则排序
eg:
( SELECT * FROM test_student)
UNION ALL
( SELECT * FROM test_student WHERE AGE_t = 13 )
union all运行结果
1 Lily 12 0 2019-08-19
2 TOM 13 0 2019-01-01
3 tt 14 0 2021-01-15
2 TOM 13 0 2019-01-01
( SELECT * FROM test_student)
UNION
( SELECT * FROM test_student WHERE AGE_t = 13 )
union运行结果
1 Lily 12 0 2019-08-19
2 TOM 13 0 2019-01-01
3 tt 14 0 2021-01-15
注意点:
- 多个结果集之间,保证每个select的列数相同,列名可以不同。oracle会将第一个结果的列名作为结果集的列名
select empno,ename from emp union select deptno,dname from dept
- 没必要每个查询结果集都用orderby,可以最后统一使用
eg:
select empno,ename from emp
union
select deptno,dname from dept
order by ename;