在多个表中查询信息,除了用多表连接外,还可以使用子查询语句,但是子查询语句所查询的内容只能来源于一张表,但是可以使用其他表的信息作为筛选条件。
子查询的格式为
select 字段名
from 表1
where 字段1 运算符(
select 字段1
from 表2
where 字段2 运算符(
select 字段2
from 表2
where 条件
)
)
举例如下 :
查询选了‘C++程学设计’且成绩大于60分的学生信息。
这个查询涉及到三张表,需要从学生表中读取学生信息,从课程表中找到课程号,然后在分数表中查询成绩信息。
三张表信息如下图:
s
student表
score表
course表
代码如下:
select sname,dept,sex
from Student
where SID in
(
select SID
from Score
where Mark>60 and CourseID in
(
select CourseID
from course
where Coursename='C++程学设计'
)
)
select sname,dept,sex
from Student
表示需要查询的字段为学生姓名,学院还有性别,数据来源于student表,后面的where语句中嵌套了两个子查询,我们从最里面的来说。
select CourseID
from course
where Coursename='C++程学设计'
表示从course表中查询字段courseid且要求coursename为c++程序设计,查询到的结果不会显示出来,而是传递给外层语句,并作为外层语句的查询条件来使用。