zoukankan      html  css  js  c++  java
  • select exists 的应用一例

    当遇到多层exists的时候,事情就变得开始复杂了。我们来看看这个例子吧

    假设有三张表

    • 选课表:学号、课程号
    • 学生表:学号、姓名
    • 课程表:课程号、课程名

    请选出选了所有课程的学生

    SELECT 姓名
    FROM 学生表
    WHERE NOT EXISTS
    ( 
    //学生缺的学科
    SELECT *
    FROM 课程表
    WHERE NOT EXISTS
    (
    //学生选的学科 
    SELECT *
    FROM 选课表
    WHERE 学生表.学号 = 选课表.学号 AND 课程表.课程号 = 选课表.课程号
    )
    );
    

    下面解读一下这两个exists。

    第一层not exists的意思是 对一个学生 而言选出他没选过的课程。如果他没选过的课程为空,那么他就选择了所有课程。

    第二层not exits的意思是 对一个学生一门指定的课程 筛选出选课表中对应的记录。

    从逻辑上说,“选了所有课程的学生”等价于

    对一个学生,不存在这样的课程,这个课程不没有被这个学生选。

  • 相关阅读:
    Rsa加密类
    Des加密类
    AES对称加密解密类
    用字符串生成二维码
    ViedoUtil获取视频的缩略图
    UmUtils得到友盟的渠道号
    UiUtils
    StringUtils
    ShockUtil振动工具类
    SHA加密
  • 原文地址:https://www.cnblogs.com/englefly/p/8503780.html
Copyright © 2011-2022 走看看