SQL:union all和union的区别 和使用

简介: SQL:union all和union的区别 和使用


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

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

  • UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复
  • union 是取唯一值,记录没有重复


1、UNION 的语法:

[SQL 语句 1]

UNION

[SQL 语句 2]

2、UNION ALL 的语法:

[SQL 语句 1]

UNION ALL

[SQL 语句 2]


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会将第一个结果的列名作为结果集的列名。


例如下面是一个例子:

select empno,ename from emp 
union 
select deptno,dname from dept 


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

select empno,ename from emp 
union 
select deptno,dname from dept 
order by ename;




目录
相关文章
|
2月前
|
SQL 存储 NoSQL
. NoSQL和SQL的区别、使用场景与选型比较
【7月更文挑战第30天】. NoSQL和SQL的区别、使用场景与选型比较
42 15
|
28天前
|
SQL 数据库
|
28天前
|
SQL 数据挖掘
|
28天前
|
SQL 存储 关系型数据库
|
2月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
1月前
|
SQL Java 数据库连接
|
2月前
|
SQL 分布式计算 资源调度
MaxCompute操作报错合集之执行SQL Union All操作时,数据类型产生报错,该怎么解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
2月前
|
SQL 存储 数据库
深入理解 SQL UNION 运算符及其应用场景
【7月更文挑战第8天】SQL UNION 概述 `UNION` 运算符结合多个`SELECT`语句,生成不含重复行的结果集。基本语法是:`SELECT...FROM table1 UNION SELECT...FROM table2`。适用于整合相同结构数据表、不同条件查询结果及跨数据库数据。注意列数和数据类型需匹配,排序规则一致,大量操作可能影响性能。示例:合并`Students_Math`和`Students_Science`表中`StudentID`和`Grade`的数据。
|
SQL 数据库 数据库管理
Sql Server的艺术(五) SQL UNION与UNION JOIN运算符
原文:Sql Server的艺术(五) SQL UNION与UNION JOIN运算符 1、关系的集合运算   集合的3个最普通的运算是并、交和差。对于任意集合R和S(当然,这里的R和S可以是表R和表S),这些运算定义如下。
1204 0
|
1天前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")