MySQL 查询被学生选修的课程
时间: 2023-11-14 14:07:14 浏览: 97
可以使用以下 SQL 语句查询被学生选修的课程:
```
SELECT DISTINCT course.course_name
FROM course_selection
JOIN course ON course_selection.course_id = course.course_id
WHERE course_selection.student_id = 'your_student_id';
```
其中,`course_selection` 是选课信息表的表名,`course` 是课程信息表的表名,`course_selection.course_id` 是选课信息表中课程号的列名,`course.course_name` 是课程信息表中课程名的列名,`course_selection.student_id` 是选课信息表中学生 ID 的列名,`your_student_id` 是你要查询的学生的 ID。
这条 SQL 语句使用了 `JOIN` 来连接选课信息表和课程信息表,使用 `ON` 子句指定连接的条件是课程号相等。然后,使用 `WHERE` 子句指定了查询的条件是学生 ID 等于指定的值。最后,使用 `DISTINCT` 关键字去重,确保每门课程只会出现一次,并且只查询课程名这一列的值。
相关问题
mysql查询学生所选修的全部课程_查询选修了全部课程的学生姓名
查询学生所选修的全部课程:
```mysql
SELECT s.name, c.course_name
FROM student s
JOIN student_course sc ON s.id = sc.student_id
JOIN course c ON sc.course_id = c.id
WHERE s.id = [学生ID];
```
查询选修了全部课程的学生姓名:
```mysql
SELECT s.name
FROM student s
JOIN student_course sc ON s.id = sc.student_id
JOIN course c ON sc.course_id = c.id
GROUP BY s.id
HAVING COUNT(DISTINCT c.id) = (SELECT COUNT(*) FROM course);
```
这里使用了子查询来获取全部课程的数量,再通过 GROUP BY 和 HAVING 子句来筛选选修了全部课程的学生。
MySQL查询所有没有选修课程的学生的学号、姓名
假设我们有以下两张表:
学生表 (students):
| 学号 | 姓名 |
| ---- | -----|
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
| 4 | 赵六 |
选课表 (course_selections):
| 学号 | 课程编号 |
| ---- | -----|
| 1 | 1001 |
| 1 | 1002 |
| 2 | 1001 |
| 3 | 1003 |
则查询所有没有选修课程的学生的学号、姓名的SQL语句如下:
```
SELECT s.学号, s.姓名
FROM 学生表 s
LEFT JOIN 选课表 c ON s.学号 = c.学号
WHERE c.学号 IS NULL;
```
该语句使用了左连接(LEFT JOIN)将学生表和选课表连接起来,然后使用 WHERE 子句过滤出选修课程为空的记录,最后只查询学号和姓名两个字段。
阅读全文