SQL SEVER查询选修了课程的学生姓名。 ◇查询选修了全部课程的学生姓名。 ◇查询至少选修了学号为S01学生选修的全部课程的学生号码。 ◇查询所有存在不及格情况(<60)的学生的学号和姓名。
时间: 2023-09-27 09:06:09 浏览: 45
1. 查询选修了课程的学生姓名:
```
SELECT DISTINCT student.name
FROM student, elective
WHERE student.id = elective.id;
```
2. 查询选修了全部课程的学生姓名:
```
SELECT name
FROM student
WHERE NOT EXISTS (SELECT course_id FROM course WHERE course_id NOT IN (SELECT course_id FROM elective WHERE id = student.id));
```
3. 查询至少选修了学号为S01学生选修的全部课程的学生号码:
```
SELECT id
FROM elective
WHERE course_id IN (SELECT course_id FROM elective WHERE id = 'S01')
GROUP BY id
HAVING COUNT(DISTINCT course_id) = (SELECT COUNT(DISTINCT course_id) FROM elective WHERE id = 'S01');
```
4. 查询所有存在不及格情况(<60)的学生的学号和姓名:
```
SELECT DISTINCT student.id, student.name
FROM student, elective
WHERE student.id = elective.id AND elective.score < 60;
```
相关问题
SQL SEVER查询选修了课程的学生总人数。
好的,您可以尝试使用以下 SQL 查询语句:
```
SELECT COUNT(DISTINCT student_id) as student_count
FROM student_course;
```
解释一下这个查询语句:
- `student_course` 是指学生选课表的表名,您需要替换成您实际使用的表名。
- `DISTINCT student_id` 表示去除重复的学生编号,只计算选修了课程的学生总人数。
- `COUNT(*)` 表示计算学生总数。
- `as student_count` 表示将计算结果重命名为 student_count。
希望这个查询语句能够帮到您!
sql sever查询选修了两门以上课程的学生学号与课程数。
好的,你可以使用以下 SQL 语句来查询:
```
SELECT 选课表.学号, COUNT(*) AS 课程数
FROM 选课表
GROUP BY 选课表.学号
HAVING COUNT(*) >= 2;
```
其中,`选课表` 是你所查询的选课信息表的表名,`学号` 是你所需要的字段名。`COUNT(*)` 用于统计每个学生选择的课程数,`GROUP BY` 子句用于按照学号对结果进行分组,`HAVING` 子句中的 `COUNT(*) >= 2` 用于筛选选修了两门以上课程的学生。