子查询

子查询

本质:在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'
)
)

 

posted @ 2021-04-23 15:25  术树  阅读(96)  评论(0)    收藏  举报