`

oracle minus差集 union并集 intersect交集

阅读更多

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 并集

 

分享到:
评论
1 楼 woyaokshini 2012-07-19  

相关推荐

    JS计算两个数组的交集、差集、并集、补集(多种实现方式)

    在JavaScript中,处理数组操作是常见的任务,特别是当你需要找出两个数组之间的交集、差集、并集和补集时。这些概念源自集合论,并在编程中被广泛应用于数据处理和分析。以下将详细介绍如何使用ES5和ES6语法来实现...

    js取两个数组的交集|差集|并集|补集|去重示例代码|angluo-javascript-98592.pdf

    本篇将详细介绍如何使用JavaScript来获取两个数组的交集、差集、并集和补集,以及如何去除数组中的重复元素。这些操作在实际编程中非常实用,可以帮助我们有效地处理和分析数据。 首先,我们需要一个辅助方法`each`...

    Oracle集合操作函数union、intersect、minus.docx

    Oracle 集合操作函数 union、intersect、minus Oracle 集合操作函数是用于合并多条 SELECT 语句的结果的函数,包括 UNION、INTERSECT、MINUS 等。这些函数可以将多个查询结果合并成一个结果集,以便进一步处理和...

    JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】

    在JavaScript中,集合运算通常指的是对数组或类数组对象进行的交集、并集、差集和去重等操作。随着ECMAScript的发展,从ES5到ES6,这些操作的实现方式也有了较大的变化。下面,我们将详细介绍使用ES5和ES6语法来实现...

    数据库——的集合运算

    集合运算是数据库查询中的一种重要操作,它允许将两个或多个SQL查询的结果集进行并集、交集和差集的运算。在数据库的查询语言中,如SQL(Structured Query Language),集合运算符用于对查询结果集进行组合或比较,...

    oraclesql优化53个规则(三)[收集].pdf

    Oracle在执行查询时会进行多种内部操作,包括排序(SORT)、连接(JOIN)、并集(UNION)、差集(MINUS)、交集(INTERSECT)等。例如: - ORDER BY会触发SORT ORDER BY操作,用于对结果集进行排序。 - UNION和UNION...

    oracle常用查询语句示例

    此外,Oracle还支持集合操作,如并集(UNION),交集(INTERSECT)和差集(MINUS): ```sql -- 并集:返回两个查询结果的唯一行 SELECT column FROM table1 UNION SELECT column FROM table2; -- 交集:返回两个...

    Oracle9i的简化SQL语法

    2. **集合运算符**:引入了`UNION ALL`、`INTERSECT`和`MINUS`操作符,使得数据集合的并集、交集和差集操作更加直观。 3. **分析函数**:新增了窗口函数,如`ROW_NUMBER()`、`RANK()`、`DENSE_RANK()`,允许在结果...

    oracleOcp课程大纲

    6. 探索高级SQL查询技术,如合并查询(MERGE)、并集(UNION ALL)、交集(INTERSECT)、差集(MINUS),以及GROUP BY、ROLLUP、CUBE等聚合函数,提升数据提取效率。 7. 学习编写SQL脚本,生成报表样式的输出结果,...

    Oracle 10g SQL操作和PLSQL所有命令集合

    集合操作包括并集(UNION)、交集(INTERSECT)和差集(MINUS)。 5. **连接查询**:用于合并多个表的数据,依据表之间的关联关系,如内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接...

    Oracle课程文档2

    主要有三种类型的集合运算:并集(`UNION`, `UNION ALL`)、交集(`INTERSECT`)和差集(`MINUS`)。 - **并集(`UNION` / `UNION ALL`)** - **`UNION`** 运算符用于合并两个或多个`SELECT`语句的结果集,并自动...

    Oracle公司内部数据库培训学习资料

    "15_SET 运算符.ppt"讲解了并集(UNION)、交集(INTERSECT)和差集(MINUS)等集合运算符,用于合并和比较多个查询结果集。 "16_控制用户权限.ppt"涵盖了Oracle的权限和角色管理,这是数据库安全的关键部分,包括...

    SQL面试题:经典例.docx

    SQL 面试题:经典 50 例 本文档总结了 SQL 面试题的经典 50 例,涵盖了 SELECT 查询、FROM 子句、WHERE 条件、GROUP BY 分组、HAVING 条件、ORDER BY 排序、LIMIT 限制等多个方面。...* MINUS(EXCEPT)相减(差集)

    select_集合查询1

    在Oracle数据库中,集合查询是一种处理多个数据集的方法,它包括`UNION`, `INTERSECT`, 和 `MINUS`这三个操作符。这些操作符帮助我们合并或对比来自不同SQL查询的结果集,从而获取我们需要的数据。 1. **UNION**: ...

    Oracle基础知识

    集合操作符包括`INTERSECT`(交集)、`UNION`(并集)和`MINUS`(差集),用于组合多个查询结果。 #### 2.1 交集:INTERSECT `INTERSECT`返回两个或多个查询结果中的公共行。例如,找出部门10和部门20共有的工作...

    Oracle数据库常用sql语句的分类和常用函数.docx

    - **交集**:`INTERSECT` - **分组查询**: ```sql SELECT 字段名1, 字段名2, … FROM 表名 GROUP BY 字段名1 [HAVING 条件]; ``` - **多表连接查询**: ```sql SELECT 字段名1, 字段名2, … FROM 表名1 INNER...

    oracle 学习笔记

    3. 集合运算符如UNION、INTERSECT和MINUS等用于实现集合运算。 4. 子查询、连接和集合的总结涉及如何根据查询需求选择合适的查询方式。 十五、排名分页问题 1. Rownum是Oracle数据库中用于表示查询结果集中行号的一...

    数据库课设—集合交,并,差

    例如,SQL(结构化查询语言)提供了对表进行交集(INTERSECT)、并集(UNION)和差集(MINUS或EXCEPT)的操作。 首先,让我们来了解这三个基本操作: 1. **集合交集**:交集(INTERSECT)返回两个集合中都有的元素...

Global site tag (gtag.js) - Google Analytics