当前位置:   article > 正文

mysql 中 union 和 union all 的区别与使用场景_union all功能

union all功能

目录

一.前言

二.使用场景

sql的书写格式

 三.区别

区别总结:

效率:


一.前言

在我们日常开发中, 经常会遇到分表储存数据的场景, 取数据时需要取出两个表的的数据, 将两个表的数据联合查询, 这时我就用到了我们的数据库函数union 和 union all, 其实我们也可以取用代码实现想要的联合查询结果, 但我个人认为还是使用数据开函数比较好一点 

二.使用场景

我们的两个表中要有相同存储数据的字段

sql的书写格式

注意: 再写sql时 union和 union all 内部select 语句要有相同数量的字段, 列必须要有相同的数据类型, 同时每条select语句中的字段的顺序必须相同

示例:

  1. sql一:
  2. union all格式:
  3. SELECT a.credit_code FROM zjjg_security_basic_info a
  4. UNION ALL
  5. SELECT b.credit_code FROM zjjg_detection_base_info b
  6. sql二:
  7. union 格式:
  8. SELECT a.credit_code FROM zjjg_security_basic_info a
  9. UNION
  10. SELECT b.credit_code FROM zjjg_detection_base_info b

如图:

 三.区别

根据标题二的书写规范和sql我们看一下结果

sq一的union all语句结果

  1. cred_code
  2. 123456
  3. 340122111122223333
  4. baocun
  5. 1234562
  6. ANPING
  7. 123214134123412
  8. 91540000783519684L
  9. 111222
  10. 340122111122223333
  11. 1245
  12. 1234562
  13. 123214134123412

sql二的union 语句结果

  1. credit_code
  2. 123456
  3. 340122111122223333
  4. baocun
  5. 1234562
  6. ANPING
  7. 123214134123412
  8. 91540000783519684L
  9. 111222
  10. 1245

结论: union all语句包含重复结果而union不包含重复结果

区别总结:

1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct;

2、union all: 对两个结果集进行并集操作,, 不管是不是重复;

效率:

union 会去重,表数据量超大时,distinct(去重)的效率是极低的(sql中不建议使用),而且连表数量比较多时,这就导致了sql查询起来十分缓慢,而union all是不会distinct(去重)的在条件允许并且数据量大的时候建议用union all

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/614518
推荐阅读
相关标签
  

闽ICP备14008679号