zoukankan      html  css  js  c++  java
  • Sql语句之并(UNION)、交(INTERSECT)、差(minus)、除去(EXCEPT)

    UNION

    查询选修了180101号或180102号课程或二者都选修了的学生学号、课程号和成绩。

    (SELECT  学号, 课程号, 成绩

    FROM   学习

    WHERE   课程号='180101')

      UNION

    (SELECT 学号, 课程号, 成绩

    FROM 学习

    WHERE    课程号='180102')

    与SELECT子句不同,UNION运算自动去除重复。因此,在本例中,若只输出学生的学号,则相同的学号只出现一次。如果想保留所有的重复,则必须用UNION ALL代替UNION,且查询结果中出现的重复元组数等于两个集合中出现的重复元组数的和。

     

    INTERSECT

    查询同时选修了180101和180102号课程的学生学号、课程号和成绩。

    (SELECT  学号, 课程号, 成绩

    FROM   学习

    WHERE 课程号='180101')

    INTERSECT

    (SELECT 学号, 课程号, 成绩

    FROM 学习

    WHERE 课程号='180102')

    INTERSECT运算自动去除重复,如果想保留所有的重复,必须用INTERSECT ALL代替INTERSECT,结果中出现的重复元组数等于两集合出现的重复元组数里较少的那个。

    intersect运算 返回查询结果中相同的部分既他们的交集

     

    minus-(oracle)

    返回在第一个查询结果中与第二个查询结果不相同的那部分行记录,
    即两个结果的差集
    select * from abc2
        minus
      select * from abc ;

     

    EXCEPT

    查询选修了180101号课程的学生中没有选修180102号课程的学生学号、课程号和成绩。
    (SELECT  学号, 课程号, 成绩
    FROM   学习
    WHERE  课程号='180101')
    EXCEPT
    (SELECT 学号, 课程号, 成绩
    FROM 学习
    WHERE   课程号='180102')
    EXCEPT运算自动去除重复,如果想保留所有的重复,必须用EXCEPT ALL代替EXCEPT,结果中出现的重复元组数等于两集合出现的重复元组数之差(前提是差是正值)。

    在不支持INTERSECT和EXCEPT运算的DBMS中,必须使用其它方法实现,其中,嵌套查询是十分有效的一种方法。

  • 相关阅读:
    虚拟机网络模式
    js读取json包装的map集合
    LeetCode 94:Binary Tree Inorder Traversal
    tornado+ansible+twisted+mongodb运维自己主动化系统开发(四)
    UVA
    解决request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1这个小问题
    eclipse调试web项目
    Action的mapping.findFoward(forwardName)必须要在struts-config.xml中的对应的action节点配置一个forward节点
    使用struts的时候form用struts的,不用html本身的
    eclipse的源代码编辑窗口可以拖出来单独使用的哦
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/7552457.html
Copyright © 2011-2022 走看看