1、创建测试表,
create table test_uni1(id number, value varchar2(20));
create table test_uni2(id number, value varchar2(20));
2、插入测试数据
insert into test_uni1 values (1, 'name1');
insert into test_uni1 values (2, 'name2');
insert into test_uni1 values (3, null);
insert into test_uni2 values (1, 'uni1');
insert into test_uni2 values (2, 'uni2');
insert into test_uni2 values (3, null);
3、查询两张表的UNION ALL情况,select t.* from test_uni1 t union all select t.* from test_uni2 t;
4、编写sql,只查询一列value,且有记录为空的情况;
select value from test_uni1 t union all select value from test_uni2 t;通过结果可以发现,为空的记录列,并没有展示。
union all 不管是否重复,数据都不合并重复行的
而 union 是合并重复行的
比如:
A表:
col1 col2 col3
1 a (null)
2 b (null)
3 c xxx
B表:
col1 col2 col3
1 a yyy
2 b (null)
4 d (null)
那么:
select * from A
union all
select * from B
结果:
col1 col2 col3
1 a (null)
2 b (null)
3 c xxx
1 a yyy
2 b (null)
4 d (null)
select * from A
union all
select * from B
结果:
col1 col2 col3
1 a (null)
2 b (null)
3 c xxx
1 a yyy
4 d (null)
加入 a表有两行数据,b表有3行数据,
合并后 的结构是有 5行数据的,
a的数据和b的数据,每行的内容来自a和b表,行的内容不会交叉的。