mysql查询学生所选修的全部课程_查询选修了全部课程的学生姓名
时间: 2023-11-15 16:05:08 浏览: 169
查询学生所选修的全部课程:
```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中查询没有选修学号20121522学生选修的全部课程的学生姓名
可以使用以下 SQL 语句查询没有选修学号为20121522的学生选修的全部课程的学生姓名:
SELECT DISTINCT s.name
FROM student s
WHERE s.sno NOT IN
(SELECT sc.sno
FROM score sc
WHERE sc.cno NOT IN
(SELECT cno
FROM course
WHERE cname IN
(SELECT cname
FROM course
WHERE cno IN
(SELECT cno
FROM score
WHERE sno = '20121522'))));
MySQL 查询被学生选修的课程
可以使用以下 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` 关键字去重,确保每门课程只会出现一次,并且只查询课程名这一列的值。
阅读全文