`
yinchunjian
  • 浏览: 283054 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Oracle 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中的数据。

 

==========================================================

今天在看数据集合时偶然看到了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常用关键词和函数

    MINUS关键字用于在两个查询结果之间找到差异,返回的结果是只存在于第一个查询中的行。需要注意的是,MINUS操作也会自动去除重复行。 最后,游标(CURSOR)是Oracle处理结果集的一种方式,主要用于存储过程和函数。...

    Oracle中比对2张表之间数据是否一致的几种方法

    本文介绍了三种在Oracle中对比两张表数据一致性的方法:使用11g提供的`dbms_comparison`包、利用`EXCEPT`或`MINUS`关键字以及编写自定义脚本。每种方法都有其适用场景,可以根据实际需求选择合适的方法来确保数据的...

    java笔记\Oracle里sql不能用limit的处理

    在Java开发中,我们经常需要对数据库进行分页查询,但是Oracle数据库不支持Limit关键字,那么如何在Oracle中实现分页查询呢?下面,我们将详细介绍Oracle中SQL不能用Limit的处理方法。 一、使用RowNum实现分页查询 ...

    Oracle 11g学习笔记基础篇(pdf)

    在Oracle 11g中,SQL语句不区分大小写,尽管如此,开发者习惯上会将关键字以大写形式书写,以便于代码的阅读与理解。字符串数组在Oracle中的小标是从1开始的,这不同于某些编程语言如C或Java,它们是从0开始计数。 ...

    Oracle培训教材.doc

    连接两字符串可以使用||,UNION、UNION ALL、INTERSECT和MINUS则用于合并或比较多个查询的结果集。 在SQL查询中,SELECT语句是最基础的部分,用于从表中提取数据。例如,`SELECT * FROM jobs`会显示jobs表的所有列...

    韩顺平2011oracle学习笔记

    3. **删除用户**:如果不再需要某个用户,可以使用`DROP USER username CASCADE`删除,`CASCADE`关键字确保与用户相关的对象一并被删除。 4. **使用profile管理用户口令**:Profile是Oracle中用于控制用户资源和...

    Oracle10g_SQL_Reference.pdf

    3. **集合操作符**:UNION、INTERSECT和MINUS用于合并或对比多个查询的结果集。 4. **分组和聚合函数**:GROUP BY和HAVING子句用于按一个或多个列对结果进行分组,而聚合函数如COUNT、SUM、AVG、MAX和MIN则对分组后...

    ORACLE__SQL.rar_oracle

    在Oracle SQL中,可以使用`JOIN`关键字进行多表查询,如内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)等。 十、子查询和集合操作 子查询可以在查询中嵌套另一个查询,而集合操作如UNION、...

    异种数据库函数和标准SQL语法比较Oracle与SqlServer.rar

    - Oracle和SQL Server都支持`JOIN`,但Oracle的`MINUS`和`INTERSECT`操作在SQL Server中可以用`NOT EXISTS`和`INNER JOIN`或`UNION ALL`替代。 通过了解这些差异,开发者可以在跨平台项目中更高效地编写SQL语句,...

    吉林大学,Oracle,课堂记录完整版

    - **数据操作**:可以使用`UNION`、`INTERSECT`、`MINUS`等关键字对查询结果进行合并或筛选。 ### 四、Oracle安装与配置 - **安装准备**: - 需要预留至少4.5GB的空间。 - 安装前需要检查操作系统版本是否兼容。 ...

    Oracle中实现MySql中limit+SqlServer分页+分页的存储过程

    本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...

    超详细Oracle教程

    - **集合操作符**:介绍UNION、INTERSECT、MINUS等集合操作符的使用。 - **窗口函数**:讲解OVER子句中的窗口函数,如ROW_NUMBER、RANK等。 #### 十、数据字典 - **视图**:介绍视图的概念、创建方法及其用途。 - *...

    《Oracle数据库系统及应用》课程教学大纲.docx

    6. **SELECT高级查询**:教授多表连接查询,JOIN关键字的应用,集合操作,以及UNION, INTERSECT, MINUS等集合运算。 7. **PL/SQL编程基础**:介绍PL/SQL编程语言,用于编写存储过程、函数和触发器,实现数据库...

    Oracle_Database_11g完全参考手册.part2/3

    附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...

    oracle 学习笔记

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

    Oracle_Database_11g完全参考手册.part3/3

    附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...

Global site tag (gtag.js) - Google Analytics