MYSQL中UNION和UNION ALL的区别有哪些?

在mysql中如何想要对两个结果集进行合并操作,可以使用UNION和UNION ALL,如果只是想要去除掉重复的记录,属于UNION ALL 即可,但是如何想要除掉没有重复行数据,就要使用Union。本文详细向大家介绍mysql中UNION和UNION ALL的区别。

1、具体作用不同

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

2、使用不同

使用UNION关键字是将所有查询结果合并到一起,然后去除相同的记录。

使用UNION ALL关键字则是将所有的结果合并到一起。

3、效率不同

UNION会对结果排序和去重复 在73万条数据测试中 花费11.84秒查询.

UNION ALL 则不会排序也不会去重复 再73万数据测试中 花费 4.34秒查询

4、排重不同

Union:对两个结果集进行合并操作,多表连接后会去除掉重复的记录没有重复行数据.

UNION ALL :对两个结果集进行合并操作,多表连接后会去除掉重复的记录

总体上说,union all要比union快很多,如果没有排重的需要,建议直接使用union all;如果需要排重,则使用union。

案例

取得一个班的男生和女生的数据,并且男生2个女生3个总共五个数据

select id,grade_id,sex from (select id,grade_id,sex from oc_user_students where (birthday >= '2011-06-05' or birthday
<= '2016-06-05' ) and class_id=0 and sex=1 and status=1 order by id limit 0,2) as t1 union select id,grade_id,sex from (select id,grade_id,sex from oc_user_students where (birthday>= '2011-06-05' or birthday <= '2016-06-05' ) and class_id=0 and sex=2 and status=1 order by id limit 0,3) as t2 order by id asc limit 0,5

在这里插入图片描述

高性能MySQL(第3版).pdf

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨夜的博客

大赏给个咖啡钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值