union和union all函数的使用

Posted 小赵说事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了union和union all函数的使用相关的知识,希望对你有一定的参考价值。

union和union all函数的使用

在开发中,有些数据的存储可能涉及到分库分表,查询的时候,可能需要查询所有的分表,这个时候,就需要用到UNION或者UNION ALL。


1.union的使用:

UNION操作符用于合并两个或多个SELECT语句的结果集。

使用注意事项:

  1. UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
  2. 每条SELECT语句中列的顺序必须相同。

SELECT ID,name FROM emp1
UNION
SELECT ID,name FROM emp2


2.union all的使用:

union操作符合并的结果集,不会允许重复值,如果允许有重复值的话,使用UNION ALL.
使用注意事项:

  1. UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
  2. 每条SELECT语句中列的顺序必须相同。

select (LTRIM(substr(month_tab.month, 5, 2), ‘0’)) || ‘月’ month from(
select to_char(ADD_MONTHS(trunc(sysdate), -6), ‘yyyymm’) month from dual
UNION all
select to_char(ADD_MONTHS(trunc(sysdate), -5),‘yyyymm’) month from dual > > UNION all
select to_char(ADD_MONTHS(trunc(sysdate), -4), ‘yyyymm’) month from dual
UNION all
select to_char(ADD_MONTHS(trunc(sysdate), -3), ‘yyyymm’) month from dual > > UNION all
select to_char(ADD_MONTHS(trunc(sysdate), -2), ‘yyyymm’) month from dual > > UNION all
select to_char(ADD_MONTHS(trunc(sysdate), -1), ‘yyyymm’) month from dual )
month_tab) t

大厂必考Mysql面试题union all 和 union

最近领导和小明抱怨,来面试的很多同学连union all 和 union 有什么差异都搞不清楚。实际上,这个知识点是比较简单的,不够在工作中有很多同事一不小心就搞混淆了。

所以小明今天特意和大家分享一下这两个函数的区别。
先说结论,因为union 操作会对结果去重且排序,所以从速度来说, union all会更胜一筹。

建两张表,分别插入几条数据:

大厂必考Mysql面试题union all 和 union

这两张表唯一的不同就是数据中,一个是“王五”,一个是“老六”。


使用union all
可以看出,union all 没有去重,查出了两个“张三”和“李四”;

大厂必考Mysql面试题union all 和 union


使用union


由此可见,“张三”和“李四”被去重了。

然后,我们再来看下两个SQL(也就是union和union all)的性能分析。

大厂必考Mysql面试题union all 和 union


使用union all
通过性能分析可得出,union比union all 多做了操作。由此得结论:
·union去重并排序,union all直接返回合并的结果,不去重也不排序;
·union all比union性能好。


大厂必考Mysql面试题union all 和 union



想要了解更多MySQL相关知识,获取相关课程资源,添加老师微信并回复【MySQL资料包】领取更多相关资料!

以上是关于union和union all函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

union和union all 的写法

union all 和 union

oracle中union和union all 使用区别

Union all和Union差别

union和union all的区别

mysql中union和union all的区别和注意点