SQL 列出只选修一门课程的学生的学号、姓名、院系及成绩
时间: 2023-08-02 08:06:15 浏览: 101
假设有三个表:学生表(students)、课程表(courses)和成绩表(scores),并且它们之间的关系是学生表和课程表通过成绩表关联起来的。那么,可以使用以下 SQL 语句来列出只选修一门课程的学生的学号、姓名、院系及成绩:
```
SELECT students.id, students.name, students.department, scores.score
FROM students
INNER JOIN scores ON students.id = scores.student_id
WHERE students.id IN (
SELECT student_id
FROM scores
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) = 1
)
```
上述 SQL 语句中,首先使用 INNER JOIN 将学生表和成绩表关联起来,然后筛选出只选修一门课程的学生。这里使用了子查询和 GROUP BY 语句来实现,最后输出学号、姓名、院系和成绩。
相关问题
数据库建立只选修一门课程的学生的学号、姓名、院系及成绩的视图;
好的,您想要知道如何创建一个只选修一门课程的学生的学号、姓名、院系及成绩的视图。这个查询可以使用 SQL 语言来实现。首先,您需要在数据库中有一个表格,其中包含学生的学号、姓名、院系和成绩。然后,您可以使用以下 SQL 查询来创建视图:
```sql
CREATE VIEW one_course_view AS
SELECT student_id, name, department, grade
FROM student_table
GROUP BY student_id
HAVING COUNT(course) = 1;
```
这个视图将会返回只选修了一门课程的学生的学号、姓名、院系及其成绩。请注意,这个视图是基于一个假设,即每个学生只选修了一门课程,如果有学生选择了多门课程,那么该视图将无法正确地显示这些数据。
sql语句 查询出只选修了一门课程的全部学生的学号和姓名
好的,针对你的问题,以下是对应的 SQL 语句:
```
SELECT s.id, s.name
FROM student s
INNER JOIN sc ON s.id = sc.sid
GROUP BY sc.sid
HAVING COUNT(sc.cid) = 1;
```
这个 SQL 查询语句的大致思路如下:
1. 从 `student` 和 `sc` 两张表中关联查询学生的学号和课程的课程号;
2. 通过 `GROUP BY` 对学生的学号进行分组;
3. 通过 `HAVING` 限制查询结果,只保留选课数量为 1 的学生。
希望这个回答能够帮助到你!