mysql中查询没有选修学号20121522学生选修的全部课程的学生姓名
时间: 2023-11-10 12:34:15 浏览: 91
可以使用以下 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数据库 查询计算机系的学生的学号、姓名; 查询选修了数据库课程的学生学号姓名和成绩; 查询选修了学号为's02'的学生的全部选修课程的学生的学号姓名和系别。
好的,您的三个问题我分别回答如下:
1. 查询计算机系的学生的学号、姓名:
```
SELECT 学号, 姓名 FROM 学生 WHERE 系别 = '计算机系';
```
2. 查询选修了数据库课程的学生学号姓名和成绩:
```
SELECT 学号, 姓名, 成绩
FROM 学生, 选课
WHERE 学生.学号 = 选课.学号 AND 选课.课程名称 = '数据库';
```
3. 查询选修了学号为's02'的学生的全部选修课程的学生的学号姓名和系别:
```
SELECT 学生.学号, 学生.姓名, 学生.系别
FROM 学生, 选课
WHERE 学生.学号 = 选课.学号 AND 选课.课程名称 IN (
SELECT 选课.课程名称
FROM 选课
WHERE 选课.学号 = 's02'
);
```
希望我的回答能够帮助到您,如果您还有其他问题可以继续问我哦!
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 子句过滤出选修课程为空的记录,最后只查询学号和姓名两个字段。
阅读全文