1. union 和 union all的区别

参考来源:
SQL语句中:UNION与UNION ALL的区别
数据库中UNION和UNION ALL的区别以及并集怎么取得
关于Union和Union All的区别以及用法

先说说这两个用法的要求:
必须选择相同数量的列,每条select语句中的列的顺序也必须相同,这些列也必须拥有相似的数据类型。

也就是说,要达到六耳猕猴和通背猿猴的那种匹配度才能union (all),这是前提。

这两个关键字都是将两个结果集合并成一个

union 是在进行表链接后,筛选掉完全相同的记录,union all不会去重,记录可能有重复;

union 会按照select 字段的顺序进行排序(默认),union all 只是简单的将两个结果集合并就返回,并不排序;

所以效率上来说,union all 要比union 快很多,在确认合并的两个结果集总不包含重复数据且不需要排序的话,使用union all;

另外,
这两个操作中,select的列名不一定要一样,如果要对进行排序,不需要在每一个select结果集中排序,只需要在最后一条语句中使用order by 进行排序即可。

select pname,ename from emp 
union 
select username,dname from dept
order by ename;

简要回答:
UNION去重且排序
UNION ALL不去重不排序

来个栗子

现在有两张表:
SQL中的一些区别
1.union 测试
SQL中的一些区别可以看到这里面有两个令狐冲,不是说会去重的嘛?!

大家看清楚了,这段SQL中含有的字段包括了课程名字和老师名字,虽然令狐冲只有一个,但是这两个字段都不一样,所以不是重复的记录,所以这也就是我上面说,完全相同

那就来个去重的栗子尝一下

SQL中的一些区别这些应该学乖了吧,select中只有前两个字段,这样令狐冲记录就是重复的,所以只显示一条记录!

所以,如果要使用union,要想想自己只是想看看有哪些学生,还是要看所有信息,在select字段中选择。

2.union all测试
不好意思哈,参考来源中没做,我也懒得自己建表去测了哈哈哈~~
不过可以想到,不管选哪几个字段,都会有两个令狐冲的记录的。

相关文章:

  • 2021-09-14
  • 2022-12-23
  • 2021-09-25
  • 2021-09-12
  • 2022-12-23
  • 2021-08-25
  • 2021-10-04
  • 2021-06-17
猜你喜欢
  • 2021-06-29
  • 2022-12-23
  • 2021-06-16
  • 2021-08-20
  • 2021-07-21
  • 2022-12-23
  • 2021-10-01
相关资源
相似解决方案