`

Oracle中的MINUS和UNION用法(转)

阅读更多
Oracle中的MINUS和UNION用法(转)Oracle中的MINUS和UNION用法

MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有

的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果

内,那这笔资料就被抛弃。
MINUS 的语法如下:
[SQL 语句 1]
MINUS
[SQL 语句 2]
我们继续使用一样的例子:
Store_Information 表格
store_name  Sales  Date 
Los Angeles  $1500  Jan-05-1999 
San Diego  $250  Jan-07-1999 
Los Angeles  $300  Jan-08-1999 
Boston  $700  Jan-08-1999 


Internet Sales 表格 Date  Sales 
Jan-07-1999  $250 
Jan-10-1999  $535 
Jan-11-1999  $320 
Jan-12-1999  $750 


而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-08-1999

"Jan-05-1999", "Jan-07-1999", and "Jan-08-1999" 是 "SELECT Date FROM Store_Information" 所产生的结果。在这里面,"Jan-07-1999"

是存在于 "SELECT Date FROM Internet_Sales" 所产生的结果中。因此 "Jan-07-1999" 并不在最后的结果中。
请注意,在 MINUS 指令下,不同的值只会被列出一次。SQL中的UNION用法 UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度

来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是

同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 UNION 的语法如下: [SQL 语

句 1]
UNION
[SQL 语句 2] 假设我们有以下的两个表格, 表格: Store_Informationstore_name       Sales             Date Los Angeles      $1500

         Jan-05-1999
San Diego        $250           Jan-07-1999
Los Angeles      $300           Jan-08-1999
Boston           $700           Jan-08-1999
表格: Internet SalesDate             Sales Jan-07-1999      $250
Jan-10-1999      $535
Jan-11-1999      $320
Jan-12-1999      $750 而我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句: SELECT Date FROM

Store_Information
UNION
SELECT Date FROM Internet_Sales 结果: Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
有一点值得注意的是,如果我们在任何一个 SQL 语句 (或是两句都一起) 用 "SELECT DISTINCT Date" 的话,
那我们会得到完全一样的结果。名字可以不一样。但是,数据类型必须相似。
也就是说主表(第一个表)第一列是varchar(100),副表(第一个以外的所有表)的第一列都要是varchar(100&&<100)(char好像也可以

你试一下吧,或是可以自动转换数据类型),其它是不行的, 还有几个表的列数必须相同

SELECT 'a>b' AS x, upper(column_name), upper(data_type), upper(data_length)
  FROM user_tab_columns
WHERE table_name = 'caib_insurancebill'
MINUS
SELECT 'a>b' AS x, upper(column_name), upper(data_type), upper(data_length)
  FROM user_tab_columns
WHERE table_name = 'CAIB_INSURANCEBILL2'
UNION
SELECT 'b>a' AS x, upper(column_name), upper(data_type), upper(data_length)
  FROM user_tab_columns
WHERE table_name = 'CAIB_INSURANCEBILL2'
MINUS
SELECT 'b>a' AS x, upper(column_name), upper(data_type), upper(data_length)
  FROM user_tab_columns
WHERE table_name = 'caib_insurancebill'

http://hi.baidu.com/liyukun8203/item/40dc3f253f0a6f53c28d59a5
分享到:
评论

相关推荐

    Oracle高级sql学习与练习

    Oracle高级SQL学习与练习涵盖了数据库编程中的一系列高级主题,旨在帮助数据库开发者和管理员提高解决复杂问题的能力。在Oracle数据库系统中,高级SQL技能是进行高效数据管理、查询优化和复杂数据处理的基础。 1. ...

    oracle4的表查询和基本函数.docx

    本文将深入探讨Oracle4中的表查询和基本函数。 首先,我们关注的是基本查询。在Oracle中,查询多表通常涉及到联接操作。以示例中的雇员表(EMP)和部门表(DEPT)为例,我们可以使用JOIN语句来获取雇员及其所在部门...

    oracle中sql函数小结

    在给定的部分内容中,并未直接展示笛卡尔积的应用,但通过`CONNECT BY`和`START WITH`子句来展示了一种树形结构的查询方法。这并不是典型的笛卡尔积应用,但仍然是一种重要的查询技巧。 #### 查看树结构层次 这...

    ORACLE经典学习笔记

    本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过查询`v$parameter`视图可以获取当前实例的所有参数设置。 2....

    oracle常用查询语句示例

    本篇文章将基于"oracle常用查询语句示例"这一主题,深入探讨在Oracle中执行多表查询和单表中复杂查询的方法。 首先,我们来看单表查询。在Oracle中,基础的SELECT语句用于从单个表中检索数据。例如: ```sql ...

    Oracle Database 11g SQL Fundamentals 英文原版

    6. 集合操作:学习UNION、INTERSECT和MINUS操作,合并或对比多个查询结果。 7. PL/SQL编程:Oracle的过程化扩展PL/SQL,包括过程、函数、游标、异常处理等,用于编写复杂的业务逻辑。 8. 数据导入导出:掌握如何...

    %%%oracle函数全.zip

    9. **连接和并集函数**:UNION用于合并多个查询的结果,INTERSECT找出两个查询的交集,MINUS找出第一个查询但不在第二个查询中的结果。 10. **递归查询函数**:CONNECT_BY_ROOT和START WITH...CONNECT BY语句用于...

    Oracle_Database_11g完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle的110个自带函数总结归纳

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势之一。在Oracle中,函数用于处理各种类型的数据,包括数学运算、字符串处理、日期时间操作、逻辑判断等。以下是对...

    ORACLE__SQL.rar_oracle

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其强大的功能和灵活性使其在企业级应用中占据了重要地位。SQL(Structured Query Language)是用于管理关系数据库的标准语言,Oracle SQL则是Oracle...

    Oracle存储过程编写及调优

    在编写SQL语句时,应避免使用复杂多表关联、游标操作,以及像UNION、MINUS、DISTINCT、ORDER BY、GROUP BY和HAVING等可能导致临时表创建的操作。可以尝试用更高效的替代方法,如将UNION替换为UNION ALL,将HAVING...

    Oracle查询优化案例

    4. **子查询优化**:子查询可能会导致多次数据扫描,可以通过联接(JOIN)替代,或者使用集合操作(UNION, INTERSECT, MINUS)来优化。 5. **使用绑定变量**:避免硬解析,使用绑定变量可以重用执行计划,减少解析...

    Oracle_plsql常用方法汇总

    Oracle PL/SQL 中的常用方法汇总 Oracle PL/SQL 是一种强大的编程语言,广泛应用于 Oracle 数据库管理系统中。...这些是 Oracle PL/SQL 中的一些常用方法汇总,通过这些方法,可以实现各种复杂的操作和数据处理。

Global site tag (gtag.js) - Google Analytics