在MySQL中,如何查询那些与学号为103的学生有共同选修课程并且至少一门课程成绩相同的其他学生的详细信息,包括他们的学号、课程号以及成绩?
时间: 2024-10-19 22:15:58 浏览: 79
mysql_课程设计_学生成绩管理系统_带截图.doc
5星 · 资源好评率100%
在MySQL中,你可以使用子查询和JOIN语句来解决这个问题。首先假设我们有两个表,一个是`students`表,包含`student_id`(学号)等基本信息,另一个是`courses`表,包含`student_id`, `course_id` 和 `score` 等字段,表示学生选课及成绩。
以下是SQL查询的基本结构:
```sql
SELECT s1.student_id AS '其他学生的学号', c.course_id, c.score
FROM students s1
JOIN (
SELECT student_id, course_id, score
FROM courses
WHERE student_id = 103 -- 学号为103的学生
) s2 ON s1.student_id = s2.student_id
JOIN courses c1 ON s1.student_id = c1.student_id AND c1.course_id = s2.course_id
GROUP BY s1.student_id, c.course_id, c1.score
HAVING COUNT(*) >= 1 -- 至少有一门成绩相同
```
这个查询的工作原理是首先找到学号为103的学生的所有课程(子查询s2),然后查找所有选了相同课程并有相同成绩的学生(JOIN到c1)。最后,通过GROUP BY和HAVING子句筛选出至少一门成绩相同的其他学生。
阅读全文