#子查询
含义:出现在其他语句中的select语句,称为子查询或内查询,此时,外部的查询语句叫做主查询或外查询。
比如:
select 姓名 from 学生
where 学院代码 in(select 学院代码 from 学院 where 学院名称='计算机')
分类:
1.按子查询出现的位置:
select后边:仅支持标量子查询。
from 后边:支持表子查询。
where或having后边:支持标量子查询、列子查询、行子查询(用的不多)。
exists后:表子查询。
2.按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有多行一列)
行子查询(结果集有一行多列)
表子查询(结果集有多行多列)
-
where或having后边的子查询
特点:1.子查询放在小括号内。
2.子查询一般放在条件的右侧。
3.标量子查询一般搭配着单行操作符(> < >= <= = <>)使用。
4.列子查询一般搭配着多行操作符(in、any/some、all)使用。1.1 标量子查询。
(返回一列一行,搭配单行比较操作符使用)
子查询的执行优先于主查询的执行
案例:查询谁的数据库(课程号为C1)成绩比王娜高:select 姓名,成绩 from 学生 inner join 学习 on 学生.学号=学习.学号 where 成绩> (select 成绩 from 学生 inner join 学习 on 学生.学号=学习.学号 where 姓名='王娜' and 课程号='C1') and 课程号