子查询
本质:在where语句中嵌套一个查询语句
-- 查询课程为 高等数学-2 且分数不小于80分的学生的学号和姓名
-- 方法一:使用连接查询
SELECT s.`studentno`,`studentname`
FROM `student` s
INNER JOIN `result` r
ON s.`subjectno`=r.`subjectno`
INNER JOIN `subject` sub
ON sub.`subjectno`=r.`subjectno`
WHERE `subjectname`='高等数学-2' AND `studentresult`>=80
-- 方法二:使用连接查询+子查询
SELECT `s.studentno`,`studentname`
FROM `student` s
INNER JOIN `result` r
ON s.`subjectno`=r.`subjectno`
WHERE `studentresult`>=80 AND `subjectno`=(
SELECT `subjectname` FROM `subject`
WHERE `subjectname`='高等数学-2'
)
-- 方法三:使用子查询
-- 分步写简单sql语句,然后将其嵌套起来
SELECT `studentno`,`studentname` FROM `student` WHERE `studentno`IN(
SELECT `studentno` FROM `result` WHERE `studentresult`>=80 AND `subjectno`=(
SELECT `subjectno` FROM `subject` WHERE `subjectname`='高等数学-2'
)
)