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

  • 相关阅读:
    Spark Streaming自定义接收器
    between-flink-and-storm-Spark
    Java class loader 类加载器
    Spark 学习文章
    英文读音
    分布式系统论文
    git 常用命令
    CPU Cache
    elasticsearch 索引延迟 一致性问题等
    spark join
  • 原文地址:https://www.cnblogs.com/phoenixzq/p/4240698.html
Copyright © 2011-2022 走看看