查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名_SQL查询整理...
时间: 2024-02-23 22:02:58 浏览: 204
查询至少学习了1号课程和2号课程的学生的学号,姓名的八种写法
4星 · 用户满意度95%
假设有三张表:`students`(学生信息表,包含学号和姓名)、`courses`(课程信息表,包含课程编号和课程名称)、`scores`(成绩表,包含学号、课程编号和成绩)。
以下是查询至少有一门课与学号为"s001"的同学所学相同的同学的学号和姓名的 SQL 查询语句:
```sql
SELECT s2.学号, s2.姓名
FROM scores AS s1
JOIN scores AS s2 ON s1.课程编号 = s2.课程编号
JOIN students AS s3 ON s2.学号 = s3.学号
WHERE s1.学号 = 's001' AND s2.学号 <> 's001'
GROUP BY s2.学号, s2.姓名;
```
解释:
- `JOIN` 子句用于将 `scores` 表自连接两次,从而获取与学号为 "s001" 的学生所学的相同课程的学生的学号和课程编号。
- `JOIN` 子句还将 `students` 表连接到自连接的 `scores` 表中,以获取学生的姓名。
- `WHERE` 子句用于过滤出学号为 "s001" 的学生的成绩记录,并且排除自己。
- `GROUP BY` 子句用于按学号和姓名进行分组,以避免重复的结果。
阅读全文