mysql 子查询
来源:互联网 发布:叮当在线客服软件 编辑:程序博客网 时间:2024/06/17 01:34
现实中,很多情况需要进行下述条件的判断
集合成员资格
某一元素是否是某一个集合的成员
集合之间的比较
某一个集合是否包含另一个集合等
集合基数的测试
测试集合是否为空
测试集合是否存在重复元组
子查询:出现在Where子句中的Select语句被称为子查询(subquery) , 子查询返回了一个集合,可以通过与这个集合的比较来确定另一个查询集合。
三种类型的子查询:(NOT) IN-子查询;&-Some/ -All子查询;(NOT)EXISTS子查询
&-Some/ -All子查询
&是比较运算符: < , > , >= , <= , = , <>
如果表达式的值至少与子查询结果的某一个值相比较满足&关系,则表达式 & some ( ( 子查询) )” ” 的结果便为真
如果表达式的值至少与子查询结果的所有结果值相比较满足&关系,则表达式 & all ( ( 子查询) )” ” 的结果便为真
找出工资最低的教师姓名Select Tname From Teacher Where Salary <= all ( Select Salary From Teacher );
示例:找出001号课成绩不是最高的所有学生的学号Select S# From SC Where C# = “001” and Score < some ( Select Score From SC Where C# = “001” );
表达式相同
1 表达式 = some ( 子查询) 表达式 in ( ( 子查询) )
2 式 表达式 <> all ( 子查询) 表达式 not in ( ( 子查询) )
(NOT) EXISTS 子查询
子查询结果中有无元组存在
检索选修了赵三老师主讲课程的所有同学的姓名
Select DISTINCT Sname From Student Where exists ( Select * From SC, Course, Teacher Where SC.C# = Course.C# and SC. S# = Student.S# and Course.T# = Teacher.T# and Tname = ‘ 赵三’ ) ;
不加not形式的Exists谓词可以不用,比如上面例子就可以直接写成
Select DISTINCT Sname From Student, SC, Course, Teacher Where SC.C# = Course.C# and SC.S# = Student.S# and Course.T# = Teacher.T# and Tname = ‘ 赵三’ ) ;
然而notExists却可以实现很多新功能
检索学过001号教师主讲的所有课程的所有同学的姓名
上述语句的意思:不存在 有一门001 号教师主讲的课程
- mysql 子查询
- mysql 子查询
- Mysql子查询实例
- MySQL IN子查询
- mysql 子查询
- mysql 子查询
- Mysql子查询
- MySQL子查询
- mysql 子查询
- mysql子查询
- mysql子查询
- mysql 子查询
- 24、MySQL-子查询
- Mysql子查询
- MYSQL子查询
- mysql子查询优化
- mysql子查询
- MYSQL 子查询
- 二维码生成扫描
- hadoop-3.0.0分布式部署与配置
- Spring-AOP概述
- 普通链表实例(全)
- LED室内定位算法:RSS,TOA,AOA,TDOA
- mysql 子查询
- JavaScript的location对象
- SSL证书验证(采用AFNetwork)
- DOM
- Ubuntu 安装 JDK 7 / JDK8 的两种方式
- 递归实现二分查找
- python繁體转为简体
- MySQL数据的备份与还原
- ionic+angular4中设置使安卓也统一使用iOS的样式风格和icon