SQL--子查询

什么是子查询

子查询:顾名思义,在一个查询中,有另外一个查询,这个查询就叫做,主查询的子查询。

【把一个查询的结果,在另一个查询中使用就叫子查询。(将一个查询语句,作为一个结果集,供其他SQL语句使用)】

--需求:找出所有‘软件11108班’的学生信息。

分析:在学生表中,我们没有存,班级名称是“软件1108”班的信息,我们存的是,班级的ID。

所以第一步:我们先从班级表中,找出‘软件1108班’的班级ID,

然后第二步,根据班级ID,找出对应的学生信息;

SELECT CourseID FROM dbo.Class WHERE CourseName='软件1108'
SELECT * FROM dbo.Student WHERE Student_CourseID=(SELECT CourseID FROM dbo.Class WHERE CourseName='软件1108')

需求:找出所有班级名称是软件1103班以后的学生信息。

分析:先找出所有班级是软件1103班,以后的班级信息,然后根据这些班级信息找出满足条件的学生信息。

第一步:找出班级是软件1103班的班级信息:

SELECT CourseID FROM dbo.Class WHERE CourseName='软件1103'

第二步:找出所有大于软件1103班的班级ID【1103班以后的】

SELECT * FROM dbo.Class WHERE CourseID>(SELECT CourseID FROM dbo.Class WHERE CourseName='软件1103')

第三步:找出所有班级是软件1103班以后的学生信息

SELECT * FROM dbo.Student WHERE Student_CourseID IN(SELECT CourseID FROM dbo.Class WHERE CourseID>(SELECT CourseID FROM dbo.Class WHERE CourseName='软件1103'))

这里用到了两个子查询。

原文地址:https://www.cnblogs.com/caofangsheng/p/5137458.html