mysql 中使用外连接的方法查询全部学生的学生名和所学课程号及成绩。
时间: 2024-10-29 08:24:51 浏览: 25
在MySQL中,如果你想要查询所有学生的姓名、他们所选的所有课程号以及对应的成绩,你可以使用`LEFT JOIN`或者`INNER JOIN`结合`GROUP_CONCAT`函数来实现。这里假设我们有两个表:`students`(包含`student_id`, `name`字段)和`courses`(包含`course_id`, `student_id`, `score`字段)。以下是SQL查询的一个例子:
```sql
SELECT s.name, c.course_id, GROUP_CONCAT(c.score) AS all_scores
FROM students s
LEFT JOIN courses c ON s.student_id = c.student_id
GROUP BY s.student_id;
```
这个查询会返回每个学生的姓名及其选择的所有课程ID,成绩则是通过`GROUP_CONCAT`函数将所有成绩合并成一个字符串,逗号分隔。
如果你想获取每门课程的具体分数,而不是所有课程的集合,可以使用`JOIN`替换`LEFT JOIN`:
```sql
SELECT s.name, c1.course_id, c1.score
FROM students s
JOIN courses c1 ON s.student_id = c1.student_id
JOIN (
SELECT course_id, student_id, score
FROM courses
WHERE student_id = s.student_id
ORDER BY course_id
) c2 ON c1.course_id = c2.course_id;
```
此查询会按课程顺序显示每个学生的单门课程分数。
阅读全文