`
sangei
  • 浏览: 335720 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

(转)UNION and UNION ALL

阅读更多

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。

例如:

Java代码 复制代码
  1. select employee_id,job_id from employees   
  2. union   
  3. select employee_id,job_id from job_history  
select employee_id,job_id from employees
union
select employee_id,job_id from job_history



以上将两个表的结果联合在一起。这两个例子会将两个select语句的结果中的重复值进行压缩,也就是结果的数据并不是两条结果的条数的和。如果希望即使重复的结果显示出来可以使用union all,例如:

2.在oracle的scott用户中有表emp

Java代码 复制代码
  1. select * from emp where deptno >= 20  
  2. union all   
  3. select * from emp where deptno <= 30  
select * from emp where deptno >= 20
union all
select * from emp where deptno <= 30

这里的结果就有很多重复值了。

有关union和union all关键字需要注意的问题是:

union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。例如下面是一个例子:

Java代码 复制代码
  1. select empno,ename from emp   
  2. union   
  3. select deptno,dname from dept   
select empno,ename from emp
union
select deptno,dname from dept 


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

 

分享到:
评论

相关推荐

    sql利用union all行转列

    ### SQL利用UNION ALL进行行转列方法解析 在数据库操作中,经常需要对数据进行各种转换以满足不同的业务需求。其中,“行转列”(Pivot)是一种常见的数据转换方式,它能够将数据表中的某列或多列值转换为多列的...

    UNION ALL 的使用方法

    SELECT ... UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT IS NULL ;

    MySQL如何使用union all获得并集排序

    在MySQL中,`UNION ALL` 用于合并多个`SELECT`语句的结果集,而这里的重点是如何在合并结果后进行排序。在给定的场景中,我们有一个文章数据表,其中文章的状态通过`PROMOTE_STATUS`字段表示,分别对应0(待发布)、...

    浅析mysql union和union all

    在MySQL数据库中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的关键字,它们在处理数据时具有不同的特性和性能影响。 首先,`UNION` 关键字用于合并两个或更多 `SELECT` 查询的结果,并且会自动去除重复...

    在SQL中查询学生成绩记录的QL语句(利用UNIONALL或OR两种方法实现.docx

    ### 在SQL中查询学生成绩记录的QL语句(利用UNION ALL或OR两种方法实现) #### SQL基础知识介绍 在数据库领域中,SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被...

    MySQL中UNION与UNION ALL的基本使用方法

    在MySQL中,`UNION` 和 `UNION ALL` 是用于合并多个`SELECT`语句结果的两种方式,它们在处理结果集时有着显著的区别。本文将深入探讨这两种操作符的使用方法及其性能差异。 首先,`UNION` 操作符用于合并两个或多个...

    Apache Hadoop 3.x state of the union and upgrade guidance

    Apache Hadoop YARN is the modern distributed operating system for big data applications....And you’ll leave with all the knowledge of how to upgrade painlessly from 2.x to 3.x to get all the benefits.

    MSSQL用union查询爆数据.txt

    而`UNION ALL`则不会去除重复行,它会返回所有结果行,包括重复的行。 ### 二、利用`UNION`获取数据库元数据 #### 1. 获取数据库模式(Schema)名称 可以通过以下SQL语句获取数据库中所有的模式名称: ```sql ...

    获得汉字笔画

    create function fun_getbh(@char nchar(2)) returns int as begin return( case when unicode(@char) between 19968 and 40869 then( ... union all select 9,N'鸩' union all select 10,N'龀'

    5分钟了解MySQL5.7中union all用法的黑科技

    union all在MySQL5.6下的表现 Part1:MySQL5.6.25 [root@HE1 ~]# MySQL -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: ...

    The all code for An Union Method Combining the Stitching of Norm

    The all code for "An Union Method Combining the Stitching of Normal Images and the Supervised Semantic Segmentation of Stitched Image", Nature Communications (under review), Xing Hu, Xinjian Li, ...

    英文原版-Bone and Joint Injuries Trauma Surgery III 3rd Edition

    There currently is a clear tendency to an increasing number of accidental injuries in elderly people, in sport injuries and car crashes also in countries which recently joined the European Union and ...

    MySQL中union和order by同时使用的实现方法

    你会遇到错误提示:“Incorrect usage of UNION and ORDER BY”。这是由于MySQL期望在 `UNION` 之后有一个全局的 `ORDER BY` 而不是一个针对每个 `SELECT` 语句的 `ORDER BY`。 解决这个问题的方法有以下两种: 1....

    SQL中如何实现行转列.rar

    在SQL(结构化查询语言)中,行转列是一种常见的数据转换操作,它将数据库表中的多行数据转换为单列或多列显示。这在数据分析、报表制作或数据展示时非常有用。本教程将深入探讨如何在SQL中实现这一功能。 首先,...

    MySQL union 语法代码示例分析

    其中,`UNION`用于合并结果,`ALL`表示包含所有重复行,而`DISTINCT`则默认去除重复行(除非显式指定`ALL`)。 2. **列类型匹配**: 使用UNION时,各个SELECT语句中选择的列必须具有相同的类型。这意味着第一...

    SQL 拼音首字母

    SELECT 'A' AS PY, N'' AS word UNION ALL SELECT 'B', N'' UNION ALL SELECT 'C', N'e' UNION ALL SELECT 'D', N'z' UNION ALL SELECT 'E', N'' UNION ALL SELECT 'F', N'v' UNION ALL SELECT 'G', N'B' ...

Global site tag (gtag.js) - Google Analytics