zoukankan      html  css  js  c++  java
  • ThetaSome_ThetaAll子查询

    基本语法

    表达式 θ some(子查询)
    表达式 θ all (子查询)

    语法中,θ是比较运算符 <,>,>=,<=,=,<>

    如果表达式的值至少与子查询的结果的某一个值相比较满足θ关系,则“表达式 θ some(子查询)”的结果便为真;
    如果表达式的值与子查询结果的所有值相比都满足θ关系,则表达式θ all(子查询)的结果便为真

    找出工资最低的老师

    表内容

    select * from teacher
    +----------------+-----------------+
    | Name           | Money           |
    +----------------+-----------------+
    | Tom            |            1500 |
    | David          |            1800 |
    | Andy           |            2560 |
    +----------------+-----------------+
    

    利用ThetaAll子查询

    Select Name From Teacher
    Where Money <= all( Select Money From Teacher )
    
    +----------------+
    | Name           |
    +----------------+
    | Tom            |
    +----------------+
    

    子查询首先找出了所有教师的工资,然后ThetaAll查询工资比所有教师的工资都低的教师姓名。输出为Tom。

    找出高等数学课成绩不是最高的学生

    表内容

    mysql>select * from SC
    +---------------+---------------+-----------------+
    | SID           | CID           | Score           |
    +---------------+---------------+-----------------+
    | 001           | 高等数学      |              85 |
    | 002           | 高等数学      |              90 |
    | 003           | 高等数学      |              60 |
    | 004           | 高等数学      |              75 |
    +---------------+---------------+-----------------+
    

    利用ThetaSome子查询

    select SID from sc
    where CID='高等数学' and Score < some( select Score From SC where CID='高等数学' )
    
    +---------------+
    | SID           |
    +---------------+
    | 001           |
    | 003           |
    | 004           |
    +---------------+
    

    子查询首先找出了高等数学课所有同学的成绩,然后thetasome查询“高等数学成绩比子查询结果中任意一个成绩小的同学学号”,就找出了成绩不是最高的同学。

    找出所有课程都不及格的学生姓名

    表内容

    SC
    +---------------+---------------+-----------------+
    | SID           | CID           | Score           |
    +---------------+---------------+-----------------+
    | S001          | C001          |              40 |
    | S001          | C002          |              65 |
    | S002          | C001          |              59 |
    | S002          | C002          |              45 |
    | S002          | C003          |              18 |
    +---------------+---------------+-----------------+
    student
    +---------------+----------------+
    | SID           | Name           |
    +---------------+----------------+
    | S001          | Tom            |
    | S002          | David          |
    +---------------+----------------+
    

    利用thetaAll子查询

    select Name from student
    where 60 > all(select Score from SC where SID = student.SID )
    +----------------+
    | Name           |
    +----------------+
    | David          |
    +----------------+
    

    注意!

    表达式 = some(子查询)
    表达式 in (子查询)是等价的

    但<> some 与 not in不等价!!!
    not in 等价于 <> all

  • 相关阅读:
    Linux 基础与应用教程 003(权限管理命令简单基础)
    Linux 基础与应用教程 002
    Android:监听音键并屏蔽系统的音量调节
    Android:用Seekbar来调节屏幕亮度
    Android:获得一个竖的seekbar
    python之路(4)高阶函数和python内置函数
    python之路(3)函数和匿名函数
    python之路(2)集合(set)和字符串格式化
    python之路(1)数据类型
    SD从零开始03-04
  • 原文地址:https://www.cnblogs.com/velscode/p/10496485.html
Copyright © 2011-2022 走看看