查询“001”课程比“002”课程成绩高的所有学生的学号
//结题思路 同一个学生 学习课程001和学习课程002 成绩的比较
那么怎么固定成同一个学生呢
首先 我们可以很简单 的查询出来 课程等于001学生 的学号 和 课程等于002学生的学号
接下来 怎么固定是同一个学生呢
select stuid from student 查询出来所有学生的id 然后stuid 等于课程001的学生id 同时也登陆课程002的学生id
具体查询:
SELECT tblstudent.StuId
from tblstudent
where
(SELECT TC.Score FROM tblscore TC WHERE TC.CourseId='001'and tblstudent.StuId=tc.StuId)
”>
(SELECT tb.Score FROM tblscore Tb WHERE Tb.CourseId='002' and tblstudent.StuId=Tb.StuId)
第二个:查询学过叶平老师所教的所有课程的同学的学号,姓名
我们很容易 就能根据叶平查询到教师号 根据教师号查询到课程号
然后呢 我们密码了 怎么查
————————————————
其实我们可以换一种思路 我们先查询出来 所有学过叶平老师课程的学生也包括学历一门课程的人
我们查询出来课程号 我们就能查出学号 select 学号 from score where 课程号 in(......里面是上面查询到的课程号) 这个时候我们就查询出来所有的学号了 然后我们想查询出来那些学生都学了 我们是不是可以换个思路思考一下 比如这个老师一共教了两门课
我们这个是时候是不是可以按学号分组 count(学号) 然后where count(学号)=2
查询出来这个老师一共教了几门课就不多说了
直接上sql
SELECT 学号,COUNT(课程号) from score where 课程号 in(
SELECT 课程号 from course WHERE 教师号=(
SELECT 教师号 from teacher WHERE 教师名称='孟扎扎'))
GROUP BY 学号
HAVING COUNT(课程号) =(
SELECT COUNT(课程号)课程号 from course WHERE 教师号=(
SELECT 教师号 from teacher WHERE 教师名称='孟扎扎'))
查询课程002比001成绩低的学生
SELECT * from student st where(
(select 成绩 from score s1 where `课程号` ='0002'AND st.学号 = s1.学号)>
(select 成绩 from score s2 where `课程号` ='0001' AND st.学号 = s2.学号))
/*查询没有学全所有课程的同学的学号 我们可以先查询学全的学号*/
/*我们先查询课程的总数*/
SELECT COUNT(*) from course
/*按学生分组查询所学课程的总数*/
select 学号,COUNT(课程号) from score
GROUP BY 学号
/*然后等于课程总数就行*/
HAVING COUNT(课程号) =(SELECT COUNT(*) from course)
/*然后查询名称 两种方法 一种是in 一种是右连接*/
SELECT 姓名,学号 FROM student where 学号 in(select 学号 from score
GROUP BY 学号
/*然后等于课程总数就行*/
HAVING COUNT(课程号) =(SELECT COUNT(*) from course))
/*最好查出出来没有学全的学生*/
SELECT 姓名,学号 FROM student where 学号 not/*这个地方直接加not就行*/ in(select 学号 from score
GROUP BY 学号
/*然后等于课程总数就行*/
HAVING COUNT(课程号) =(SELECT COUNT(*) from course))