学生信息表(STU)
SNO、SNM、SEX、BIRTHDAY、NATNM、 CLSNO、GRPNO
学习情况表(STUDY)
学号SNO、课程编号CNO、考试成绩SCORE
课程表(数据字典COURSE)
课程编号CNO、课程名称CNM,任课教师TNM ,先修课程FCNO
1、查询与姓名为“张三”在同一个组的学生信息
2、查询参加了全部课程考试的学生学号及姓名(思路:没有一门课程是没有选修的)
3、删除平均分以下的成绩
第一个做出来了
但第2,3问做不出来
这是第2问的代码:
SELECT STU.SNO, STU.SNM FROM STU, STUDY, COURSE
GROUP BY STUDY.SNO HAVING COUNT(STUDY.CNO) == (SELECT COUNT(DISTINCT CNO) FROM COURSE);
错误代码: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== (select COUNT(DISTINCT CNO) FROM COURSE) LIMIT 0, 1000' at line 2
首先,在having count() 进行比对的时候,使用单 = 进行数据的关联判断,不是双 ==
然后,from 后面的表使用left join 进行关联,目前你的sql是没有标明关联字段的
最后,group by 后面,应该是STU.SNO, STU.SNM ,而不能是STUDY.SNO
修改完了之后,应该就可以了。