博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThetaSome_ThetaAll子查询
阅读量:4585 次
发布时间:2019-06-09

本文共 2439 字,大约阅读时间需要 8 分钟。

基本语法

表达式 θ some(子查询)

表达式 θ all (子查询)

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

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

如果表达式的值与子查询结果的所有值相比都满足θ关系,则表达式θ all(子查询)的结果便为真

找出工资最低的老师

表内容

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

利用ThetaAll子查询

Select Name From TeacherWhere 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 scwhere 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 studentwhere 60 > all(select Score from SC where SID = student.SID )+----------------+| Name           |+----------------+| David          |+----------------+

注意!

表达式 = some(子查询)

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

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

not in 等价于 <> all

转载于:https://www.cnblogs.com/velscode/p/10496485.html

你可能感兴趣的文章
Jzoj1277最高的奶牛
查看>>
plsql中文乱码问题(显示问号)
查看>>
C# DataTbale详细操作
查看>>
用opencv检测人眼并定位瞳孔位置
查看>>
实现多项式的JAVA类
查看>>
HDU5036 Explosion(期望 bitset)
查看>>
有限自动机的构造和识别
查看>>
初试机器学习
查看>>
DNS的功能-域名空间、域名注册和域名解析
查看>>
矩阵分解(matrix factorization)
查看>>
大型网站的架构设计与演进
查看>>
‘3 sigma’rule(68–95–99.7 rule)
查看>>
【并发编程】延时初始化
查看>>
编程珠玑--左旋字符串
查看>>
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十四:储存模块
查看>>
关于js的几道经典题(作用域、原型链等)自己做的
查看>>
【菜鸟学Python】函数的定义及调用
查看>>
宜信微服务任务执行器
查看>>
POJ 2774 Long Long Message 后缀数组
查看>>
datagrid中设置编辑,删除列是否可以访问
查看>>