懒人摘抄(内容转自CSDN资源中教程)-数据查询07-子查询
2007-09-19 09:50
274 查看
相关子查询
在前面的例子中,每个子查询仅执行一次,返回的值为主查询的WHERE子句所用。在有的查询中,子查询不只执行一次,例如,要显示其成绩比该课程平均成绩高的成绩表,其主查询为:SELECT sno,cno,degree
FROM score
WHERE degree >(待选学生所修课程的平均分)
该子查询为:
SELECT AVG(degree)
FROM score
WHERE cno=(主查询待选行的课程号cno)
这样,主查询在判断每个待选行时,必须“唤醒”子查询,告诉它该学生选修的课程号,并由子查询计算课程的平均成绩,然后将该学生的degree与平均成绩进行比较,找出相应的符合条件的行,我们把这种子查询称为相关子查询[/u]。
【例5.29】查询成绩比该课程平均成绩低的学生成绩表。
SELECT sno,cno,degree
FROM score a
WHERE degree<
(SELECT AVG(degree)
FROM score b
WHERE a.cno=b.cno)
本例执行结果如下:
sno cno degree
----- ---------- ----------
101 3-105 64
109 3-105 76
108 3-105 78
109 3-245 68
105 3-245 75
107 6-166 79
108 6-166 81
理解上述相关子查询的关键是别名,它出现在主查询“FROM score a”和子查询“FROM score b”中。这样同一个表相当于两个表,当在子查询中使用a.cno时,它访问待选行的cno,这时是一个常量,从而在b别名中找出该常量课程的平均分。由于这个过程很费时,因此不要对大于使用相关子查询。
相关文章推荐
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询08-带EXISTS测试的子查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询01-投影查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询03-排序查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询02-选择查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询04-使用聚合函数
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询06-子查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询05-表的连接查询
- 懒人摘抄(内容转自CSDN资源中教程)-数据查询00
- 懒人摘抄(内容转自CSDN资源中教程)-建表
- 懒人摘抄(内容转自CSDN资源中教程)-修改表
- 懒人摘抄(内容转自CSDN资源中教程)-删除表
- Oracle 起步日记(4)——数据查询之去重、字符串连接、子查询
- MySQL数据高级查询之连接查询、联合查询、子查询
- 数据库调优教程(二)慢查询数据准备
- 史上最简单的 MySQL 教程(二十五)「数据的高级操作 之 查询(下)」
- Hibernate的hql语句查询不到内容,但是库里有数据,直接执行SQL也能执行,能得到值,返回值取不到
- jQuery教程07-内容筛选选择器
- SQL SERVER2000教程-第五章 处理数据 第十一节 子查询
- 多表查询内连接与外连接的区别;多表之间内连接;(常用)(只连接两个表都有效数据); 多表之间的外连接:(查询所有的内容); 多表内连接:(显示和隐式结果是一样的,得到的是交集的部分)
- 《『若水新闻』客户端开发教程》——07.升级新闻内容UI