union 和 union all 的区别及使用说明

简介: union 和 union all 的区别及使用说明

如果需要将 两个select语句的结果作为一个整体显示出来,我们就需要用到union 或union all关键字。


union (或称为联合)的作用是将多个结果合并在一起显示出来。


union 去重且排序(取唯一值,记录没有重复)

union all 不去重不排序(直接连接,取到得是所有值,记录可能有重复)


union 语法:

1. [SQL 语句 1]
2. UNION
3. [SQL 语句 2]

例如:

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2


union all 语法:

1. [SQL 语句 1]
2. UNION ALL
3. [SQL 语句 2]


例如:

SELECT column_name(s) FROM table_name1

UNION ALL

SELECT column_name(s) FROM table_name2


union 和 union all 效率:

union 和 union all 关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。


从使用上说:


1、对重复结果的处理:union 在进行表链接后会筛选掉重复的记录,union all 不会去除重复记录;


2、对排序的处理:union 将会按照字段的顺序进行排序;union all 只是简单的将两个结果合并后就返回。


从效率上说:


union all 要比 union 快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用union all。


 注意:两个要联合的SQL语句字段个数必须一样,而且字段类型要“相容”(一致);


union和union all关键字需要注意:

union 和 union all都可以将多个结果集合并,而不仅仅是两个,可以将多个结果集串起来。

使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。


例如:

1. select empno,ename from emp 
2. union 
3. select deptno,dname from dept;


我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。例如:

select empno,ename from emp 
union 
select deptno,dname from dept 
order by ename;
目录
相关文章
|
4月前
Union和Union All到底有什么区别
Union和Union All到底有什么区别
107 1
|
关系型数据库 PostgreSQL
PostgreSQL listagg within group (order by) 聚合兼容用法 string_agg ( order by) - 行列变换,CSV构造...
标签 PostgreSQL , order-set agg , listagg , string_agg , order 背景 listagg — Rows to Delimited Strings The listagg function transforms values from a g...
6197 0
可以使用 UNION 或者 UNION ALL 来合并多个 SELECT 语句的结果
可以使用 UNION 或者 UNION ALL 来合并多个 SELECT 语句的结果
253 7
union和union all 的区别
union和union all 的区别
195 0
SQL:union all和union的区别 和使用
SQL:union all和union的区别 和使用
2734 0
SQL语句中union all和union的区别以及用法
SQL语句中union all和union的区别以及用法
143 0
|
SQL 数据库
数据库关键字Union和Union All的区别
数据库关键字Union和Union All的区别
227 0
数据库关键字Union和Union All的区别
|
存储 SQL 移动开发
mysql之常用函数、聚合函数以及合并(union&union all)
1) UNION:将所有的查询结果合并到一起,然后去除掉相同的记录 2) UNION ALL:将所有的查询结果合并到一起,不会去除掉相同的记录 前提条件:结果集列数个数相同,列的类型还要相同或是兼容 使用场景:在项目统计报表模块,用来合并数据
十六、UNION 与 UNION ALL 的使用
十六、UNION 与 UNION ALL 的使用
206 0
十六、UNION 与 UNION ALL 的使用