子查询和嵌套查询

-- JAVA第一学年 课程成绩排名前十的学生,并且分数要大于80 的学生信息(学号,姓名,课程名称,分数)

  SELECT s.studentNo, studentName,subjectName,studentResult

  FROM student AS s

  INNER JOIN result AS r

  ON s.studentNo = r.studentNo

  INNER JOIN subject AS sub

  ON r.subjectNo = sub.subjectNo 

  WHERE subjectName = 'JAVA第一学年' AND studentResult >80

  ORDER BY studentResult DESC

  LIMIT 1,10

-- 方式二:使用子查询(由里及外)

-- 查询所有数据结构-1 的学生学号

  SELECT studentNo, subjectNo, studentResult

  FROM result

  WHERE subjectNo = (

  SELECT subjectNo FROM subject

  WHERE subjectName = '数据库结构-1'

  )

  ORDER BY studentResult DESC

  

  -- 分数不小于80分的学生的姓名和学号

  SELECT studentNo, studentName,

  FROM student AS s

  INNER JOIN result AS r

  ON r.studentNo = s.studentNo

  WHERE studentResult >= 80

-- 在这个基础上增加一个科目,高等数学-2

  SELECT studentNo, studentName

  FROM student AS s

  INNER JOIN result AS r

  ON s.studentNo = r.studentNo

  WHERE studentResult >= 80 AND subjectNo = (

  SELECT subjectNo From subject WHERE sbjectName = '高等数学-2'

  )

 

  -- 嵌套方式--

  SElECT studentNo, studentName FROM student WHERE studentNo IN (

    SELECT studentResult FROM result WHERE studentResult>= 80 AND subjectNo =(

      SELECT subjectNo FROM subject WHERE subjectName = '高等数学-2' 

  )

  )

 

posted @ 2022-09-03 23:13  做人要有梦想  阅读(93)  评论(0)    收藏  举报