zoukankan      html  css  js  c++  java
  • Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集

    关键字: Oracle 取两个表中数据的交集 INTERSECT

    Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据

    例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了

    employee

    CODE

    NAME

    GENDER

    001 Tom M
    002 Jerry M
    003 Ana F
    salary

    CODE

    SALARY

    001 2800
    002 2500
    003 3000

    方法1:利用操作符INTERSECT

    INTERSECT 操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同。

    SELECT CODE FROM EMPLOYEE WHERE GENDER = 'M'
    INTERSECT
    SELECT CODE FROM SALARY WHERE SALARY > 2500

    第一条SQL的结果为

    CODE
    ----------
    001
    002

    第二条SQL的结果为

    CODE
    ----------
    001
    003

    INTERSECT的结果

    CODE
    ----------
    001

    方法2:利用关系SQL

    SELECT A.CODE FROM EMPLOYEE A, SALARY B
    WHERE A.CODE = B.CODE AND A.GENDER = 'M' AND B.SALARY > 2500

    结果为

    CODE
    ----------
    001

    以上两种方法是本人比较常用的方法,尤其第二种,充分体现关系数据的精髓所在。但如果两个表结构比较复杂,而且关系条件也比较难实现的话,第一种显然能够简单地得到需要的结果,也不失为一种好方法。

    差异集合: minus

    并集,并排除重复记录:union

    并集,并包含重复记录:union all

    转自:http://blog.sina.com.cn/s/blog_5656bf3e010007cz.html

  • 相关阅读:
    设置MAVEN_OPTS的推荐方法
    工作总结之常见错误排查
    工作总结之添加数据库
    工作总结之添加前端页面
    DAO以及获取自动生成主键值
    Webx pull service
    java json的处理
    Spring 基于注解的装配
    poj 3336 Count the string
    最小表示法
  • 原文地址:https://www.cnblogs.com/phoenixzq/p/4240698.html
Copyright © 2011-2022 走看看