用MySQL查询 用子查查询选修“信息系统”的成绩比“刘晨”同学“信息系统”成绩高的所有学生的学号和姓名
时间: 2023-06-25 22:05:30 浏览: 155
mysql学生成绩查询(系统)
假设有三张表:学生表(students)、课程表(courses)和成绩表(scores),其中学生表包含学生的学号(sid)和姓名(sname),课程表包含课程编号(cid)和课程名称(cname),成绩表包含学生的学号(sid)、课程编号(cid)和成绩(score)。则可以使用以下 SQL 语句进行查询:
```
SELECT s.sid, s.sname
FROM students s
INNER JOIN scores sc1 ON s.sid = sc1.sid AND sc1.cid = '信息系统'
INNER JOIN scores sc2 ON sc1.cid = sc2.cid AND sc1.score < sc2.score
INNER JOIN courses c ON c.cid = sc2.cid AND c.cname = '信息系统'
WHERE s.sname != '刘晨'
```
解析:
1. 使用 INNER JOIN 连接学生表和成绩表,以及两次成绩表,获取所有选修“信息系统”课程的学生的成绩和学号。
2. 使用 INNER JOIN 连接课程表和成绩表,获取课程名称为“信息系统”的课程编号。
3. 使用 WHERE 子句过滤掉姓名为“刘晨”的学生。
4. 使用 INNER JOIN 连接学生表和成绩表,以及两次成绩表,获取所有成绩比“刘晨”同学“信息系统”成绩高的学生的成绩和学号。
5. 最后,使用 SELECT 子句仅返回学号和姓名两个字段。
注意,以上 SQL 语句仅供参考,实际查询需要根据具体的表结构和数据进行修改。
阅读全文