写出sql语句:一个学生刘晨,选修了课程2,3,查询出另一个也选修了刘晨选修课程的同学学号Sno和姓名Sname
时间: 2024-02-25 09:58:33 浏览: 129
数据库作业8:SQL练习5 – SELECT(嵌套查询EXISTS、集合查询、基于派生表的查询)
假设学生表为students,课程表为courses,选课表为sc,可以使用下面的SQL语句来查询:
```
SELECT DISTINCT s.Sno, s.Sname
FROM students s, sc x, sc y
WHERE s.Sno = y.Sno AND x.Sno = '刘晨' AND x.Cno = y.Cno AND y.Sno <> '刘晨'
```
解释一下:
1. 使用三个表的笛卡尔积来构造一个包含学生、选课和课程信息的虚拟表;
2. 使用 x 表过滤出刘晨所选的课程信息;
3. 使用 y 表过滤出和刘晨选的课程相同的选课信息;
4. 使用 s 表过滤出和 y 表中学号相同的学生信息,即刘晨选修的课程的同学信息;
5. 使用 DISTINCT 关键字去掉重复的记录。
阅读全文