子查詢
(我本人不太喜歡子查詢,覺得聯表查詢更舒服一些)
本質:在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'
)
嵌套查詢
本質上就是比子查詢更復雜些,由於我不喜歡用子查詢,這里就不詳細說了,想要了解的可以點開下面的鏈接自己學習!