1、union union区别
在数据库中,union和union all关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
如:
select * from test_union1
union
select * from test_union2
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,union all要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all,如下:
select * from test_union1
union all
select * from test_union2
使用 union 组合查询的结果集有两个最基本的规则:
a、所有查询中的列数和列的顺序必须相同。
b、数据类型必须兼容
2、利用minus函数生成最小序列号:具体例子如下,
select
decode(min(id),
null,
'0001',
substr('0000'||min(id),
-4)) as onecolumn13880_0_
from
( ( select
to_number(substr(lsh,
-4)) + 1 as id
from
test t1
where
t1.lsh like '1200%')
union
all (
select
1 as id
from
test t1
) minus select
to_number(substr(lsh,
-4) ) as id
from
test t2
where
t2.lsh like '1200%'
)
minus原理如下:
//创建表1
create table test1
(
name varchar(10),
sex varchar(10),
age int
);
insert into test1 values('luxin','female',25);
insert into test1 values('tom','female',26);
insert into test1 values('mary1','male',27);
insert into test1 values('money','male',27);
insert into test1 values('tony','male',28);
insert into test1 values('tony1','male',19);
//创建表2
create table test2
(
name varchar(10),
sex varchar(10),
age int
);
insert into test2 values('luxin','female',25);
insert into test2 values('tom','female',26);
insert into test2 values('mary2','male',27);
insert into test2 values('money','male',27);
insert into test2 values('tony','male',28);
insert into test2 values('tony2','male',19);
-------------------------------------------
select * from test1 minus select * from test2;
结果:
NAME SEX AGE
---------- ---------- ----------
mary1 male 27
tony1 male 19
-----------------------------------------------------------
select * from test2 minus select * from test1;
结果:
NAME SEX AGE
---------- ---------- ----------
mary2 male 27
tony2 male 19
结论:Minus返回的总是左边表中的数据,它返回的是差集。
用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。
分享到:
相关推荐
### DB2数据库学习笔记知识点详解 #### 一、DB2系统架构及管理命令 ##### 1. DB2的层级概念 - **域**: 指的是DB2的管理范围,通常对应于一个物理服务器或者一组逻辑相关的服务器。 - **实例**: 实例是在一个操作...
数据库学习笔记 本资源是个人保留的学习笔记,记录了数据库学习过程中的笔记和实际操作的运行截图。在学习过程中,笔记中也记录了一些操作过程中的错误,以及后来纠察时错误的原因和改正。 数据库学习笔记的目录...
数据库学习笔记.pdf 本资源摘要信息涵盖了数据库学习笔记的主要知识点,包括数据库基本操作、库操作、表操作和数据操作等。 库操作 库操作是数据库学习笔记的基础,包括创建数据库、查找数据库、更新数据库和删除...
《韩顺平老师oracle视频教程听课笔记.pdf》将带你深入Oracle的世界,学习其高级特性,如PL/SQL编程、分区表、物质化视图、数据库链接、闪回技术、数据守护和RAC(实时应用集群)等。Oracle数据库的复杂性和灵活性使...
数据库学习笔记SQL基本操作 数据库学习笔记是对数据库操作的详细记录,涵盖了基本操作的CRUD(增删改查)操作。下面是对笔记的详细解释: ### 库操作 库操作是对数据库的基本操作,包括创建、查看、更新和删除...
数据库学习笔记.sql
java数据库学习过程的精力总结,适合初学者!对其帮助应该会很大
郝宾的数据库学习笔记主要涵盖了数据库的基本概念、作用、安装与卸载,预备知识,以及数据库操作的基础。首先,数据库被定义为存储和管理数据的软件及其数据集合,包括表、关系和操作。数据库的存在是因为它能高效地...
PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...
"Oracle 11g数据库学习笔记三" 本篇学习笔记主要讲解了Oracle 11g数据库中的数据伪列,包括ROWNUM和ROWID两种伪列的使用方法和应用场景。同时,也讨论了如何使用这些伪列来实现数据的分页功能和删除重复记录。 一...
【Microsoft SQL 数据库学习笔记】 在数据库领域,Microsoft SQL Server 是一种广泛使用的、关系型数据库管理系统,由微软公司开发和维护。SQL(Structured Query Language)是用于管理关系数据库的标准编程语言,...
db2数据库学习笔记.pdf
Redis数据库学习笔记
mysql 数据库学习笔记
总的来说,"Oracle数据库学习笔记"涵盖了Oracle数据库的基础知识、核心概念、管理和优化技巧。通过深入阅读和实践,读者可以逐步掌握这个强大的数据库管理系统,并应用于实际工作场景,解决各种数据库问题。