赞
踩
目录
在我们日常开发中, 经常会遇到分表储存数据的场景, 取数据时需要取出两个表的的数据, 将两个表的数据联合查询, 这时我就用到了我们的数据库函数union 和 union all, 其实我们也可以取用代码实现想要的联合查询结果, 但我个人认为还是使用数据开函数比较好一点
我们的两个表中要有相同存储数据的字段
注意: 再写sql时 union和 union all 内部select 语句要有相同数量的字段, 列必须要有相同的数据类型, 同时每条select语句中的字段的顺序必须相同
示例:
- sql一:
- union all格式:
- SELECT a.credit_code FROM zjjg_security_basic_info a
- UNION ALL
- SELECT b.credit_code FROM zjjg_detection_base_info b
-
- sql二:
- union 格式:
- SELECT a.credit_code FROM zjjg_security_basic_info a
- UNION
- SELECT b.credit_code FROM zjjg_detection_base_info b
如图:
根据标题二的书写规范和sql我们看一下结果
sq一的union all语句结果
- cred_code
- 123456
- 340122111122223333
- baocun
- 1234562
- ANPING
- 123214134123412
- 91540000783519684L
- 111222
- 340122111122223333
- 1245
- 1234562
- 123214134123412
sql二的union 语句结果
- credit_code
- 123456
- 340122111122223333
- baocun
- 1234562
- ANPING
- 123214134123412
- 91540000783519684L
- 111222
- 1245
结论: union all语句包含重复结果而union不包含重复结果
1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct;
2、union all: 对两个结果集进行并集操作,, 不管是不是重复;
union 会去重,表数据量超大时,distinct(去重)的效率是极低的(sql中不建议使用),而且连表数量比较多时,这就导致了sql查询起来十分缓慢,而union all是不会distinct(去重)的在条件允许并且数据量大的时候建议用union all
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。