• 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

  • 相关阅读:
    python_控制台输出带颜色的文字方法
    模拟数据库作业
    js笔记
    CSS 笔记
    html 笔记
    必备技能-Git 使用规范流程
    python 闭包
    30个python编程技巧!
    python 面向对象
    python 线程
  • 原文地址:https://www.cnblogs.com/phoenixzq/p/4240698.html
Copyright © 2020-2023  润新知