以 Student、SC、Course 基本表为数据源,查询选修了全部课程的学生学号、姓名和专业。其中student数据源包括sno学号,sname姓名,ssex性别,birthday生日,en_time入学时间,specialty专业,grade年级;SC数据表包括sno学号,cno课程号,score成绩;course数据表包括cno课程号,cname课程名,classhour学时,credit学分,cpno先修课程,用SQL server实现
时间: 2023-06-18 20:05:16 浏览: 136
基于C#+SQL Server(CS界面)学生选课及成绩查询管理系统【100010027】
5星 · 资源好评率100%
可以使用子查询和聚合函数(COUNT和SUM)来解决这个问题。以下是解决方案:
```
SELECT s.sno, s.sname, s.specialty
FROM student s
WHERE (SELECT COUNT(DISTINCT cno) FROM course) =
(SELECT COUNT(*) FROM SC WHERE SC.sno = s.sno)
```
解释:
1. 子查询 `(SELECT COUNT(DISTINCT cno) FROM course)` 用来计算课程总数。
2. 子查询 `(SELECT COUNT(*) FROM SC WHERE SC.sno = s.sno)` 用来计算每个学生选修的课程数。
3. `WHERE` 子句用来筛选出选修了全部课程的学生。
4. 最终结果中只显示学号、姓名和专业。
注意:如果有学生选修了同一门课程多次,需要使用 `DISTINCT` 关键字去重。
阅读全文