union和union all

1.首先union和union all都是用于合并两个或者两个以上的select语句的结果集的。

    二者的语句结构如下:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

2.建表进行测试

create table m_person(
	m_id int PRIMARY KEY,
    m_name varchar(20) not null,
    m_address varchar(20)
);
create table f_person(
	f_id int PRIMARY KEY,
    f_name varchar(20) not null,
    f_address varchar(20)
);
insert into `m_person`(m_name,m_address) values('张三','湖南怀化');
insert into `m_person`(m_name,m_address) values('李四','广东深圳');
insert into `m_person`(m_name,m_address) values('王二','江西九江');
insert into `m_person`(m_name,m_address) values('麻子','广西南宁');
insert into `f_person`(f_name,f_address) values('张三','湖南株洲');
insert into `f_person`(f_name,f_address) values('李四','广东广州');
insert into `f_person`(f_name,f_address) values('王二','江西南昌');
insert into `f_person`(f_name,f_address) values('麻子','广西玉林');

3.测试结果

select m_id id,m_name name,m_address address from `m_person` 
union 
select f_id id,f_name name,f_address address from `f_person`

select m_id id,m_name name,m_address address from `m_person` 
union all
select f_id id,f_name name,f_address address from `f_person`

4.总结

(1) 使用union合并结果集会去掉重复的记录,使用union all合并结果集不会去掉重复的记录。

(2) 使用union和union all内部的每个 select 语句必须拥有相同数量的列。列也必须拥有相

      似的数据类型。同时,每个 select 语句中的列的顺序必须相同。

(3) 使用union和union all命令时需要注意,只能在最后使用一个order by命令,是将两个

      查询结果合在一起之后,再进行排序,不能同时写两个order by命令。

(4) union会按字段的顺序进行排序而union all只是简单的将两个结果集进行合并。

(5) union all相较于union,速度快。如果我们在确认合并的结果集没有重复的记录时选择union all

      进行结果集的合并,提高效率。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值