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中的数据。
==========================================================
今天在看数据集合时偶然看到了SQL 有MINUS,可以达到相同的目的
具体如下:
SQL中的MINUS关键字
SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下:
[SQL Segment 1]
MINUS
[SQL Segment 2]
其实简单的一句话就是找出第一条SQL查询的不在第二条SQL语句查询结果中的那些记录,并且要注意最后返回的结果集中,不同的记录只会被列出一次!
下面是我做的实验,很明显能够看出MINUS的效率,made_order共23万笔记录,charge_detail共17万笔记录
性能比较:
SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail
1.14 sec
SELECT a.order_id FROM made_order a
WHERE NOT exists (
SELECT 1
FROM charge_detail
WHERE order_id = a.order_id
)
18.19 sec
SELECT order_id FROM made_order
WHERE order_id NOT in (
SELECT order_id
FROM charge_detail
)
20.05 sec
还有其它一下关键字:
INTERSECT (交集)
UNION ALL 并集
分享到:
相关推荐
Oracle集合操作函数union、intersect、minus.docx
oracle集合union、union all、intersect、minus
Oracle中的Union、Union_All、Intersect、Minus
union,minus和intersect关系
可以用SQL实现同样的功能,就是麻烦了点。 drop table t1; drop table t2; create table t1(id int primary key,nickname varchar(20),playNum varchar(20)); create table t2(id int primary key,nickname ...
主要介绍了Oracle minus用法详解及应用实例的相关资料,这里对oracle minus的用法进行了具体实例详解,需要的朋友可以参考下
并集 由任何查询选择的所有不重复行 UNION ALL 合并所有 由任何查询选择的所有行,包括所有重复行 EXCEPT 除外 Oracle不支持 INTERSECT 交集 返回多个查询结果中相同的部分。两个查询中都存在的所有不重复行 ...
一款便捷的数据比对工具,可进行单列数据替重、求A组数据剔除B组数据(相当于SQL中的minus)、求A组数据和B组数据的交集。可进行号码、编号、串号等数据的比对整理工作,非常方便。
NULL 博文链接:https://wuaner.iteye.com/blog/1671927
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能...Union 或 intersect 或 minus Sort-merge joins analyze
Doing INTERSECT and MINUS in MySQL Doing an INTERSECT An INTERSECT is simply an inner join where we compare the tuples of one table with those of the other, and select those that appear in both while ...
4.11 集合操作符:union、intersect和minus 4.11.1 union 4.11.2 union all 4.11.3 intersect 4.11.4 minus 4.12 视图 4.13 序列 4.14 约束:与实体模型的联系、类型、延迟 4.14.1 与实体模型的联系 4.14.2 类型 ...
4.11 集合操作符:union、intersect和minus 108 4.11.1 union 109 4.11.2 union all 109 4.11.3 intersect 110 4.11.4 minus 110 4.12 视图 112 4.13 序列 113 4.14 约束:与实体模型的联系、类型、延迟 114...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
Minus
oracle 数据库所有示例 --有去除功能的 是通过交集做的计算 select sname,sal,sage,sdeptno from student where sdeptno in(20,10) union select sname,sal,sage,sdeptno from student where sdeptno=20 ; --没有...
SQL语句生成器的特色 支持几乎所有类型的数据库, ...联合(Union,对于Oracle 支持Union All,Minus,Intersect) 支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 附属工具内嵌入Delphi IDE
13.4.2 UNION、INTERSECT和MiNUS的限制 第14章 一些复杂的技术 14.1 复杂的分组 14.2 使用临时表 14.3 使用ROLLUP、GROUPING和CUBE 14.4 家族树和COlLrlectby 14.4.1 排除个体和分支 14.4.2 向根遍历 14.4.3 基本...
1、支持几乎所有类型的数据库, 包括小型(桌面)数据库:...联合(Union,对于Oracle 支持Union All,Minus,Intersect) 4、支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 4、附属工具内嵌入Delphi IDE