子查询和嵌套查询
子查询
(我本人不太喜欢子查询,觉得联表查询更舒服一些)
本质:在where 语句中嵌套一个子查询语句
-- 查询课程为 高等数学-4 且分数不小于10分的同学的学号和姓名
-- 联表查询
SELECT `subjectname`,s.`StudentNo`,`StudentName`
FROM `student` AS s
INNER JOIN `subject` AS sub
ON s.`gradeid`=sub.`gradeid`
INNER JOIN `result` AS r
ON s.`studentno`=r.`studentno`
WHERE `subjectname`='高等数学-4' AND `studentresult`>=10
-- 子查询
-- 分成两部分
-- 先查询分数不小于10分的学生的姓名和学号
SELECT s.`StudentNo`,`StudentName`
FROM student AS s
INNER JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`
WHERE `studentresult`>=10
-- 在这个基础上增加一个科目,高等数学-4
-- 查询 高等数学-4 的编号
SELECT s.`StudentNo`,`StudentName`
FROM student AS s
INNER JOIN result AS r
ON r.`StudentNo`=s.`StudentNo`
WHERE `studentresult`>=10 AND `subjectno`=(
SELECT `subjectno` FROM `subject`
WHERE `subjectname` ='高等数学-4'
)
嵌套查询
本质上就是比子查询更复杂些,由于我不喜欢用子查询,这里就不详细说了,想要了解的可以点开下面的链接自己学习!