写出sql语句:一个学生刘晨,选修了课程2,3,查询出另一个也选修了刘晨选修课程的同学学号Sno和姓名Sname
时间: 2024-02-25 13:58:33 浏览: 102
数据结构课程设计 学生信息管理系统哈希表学号 姓名查询
5星 · 资源好评率100%
假设学生表为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 关键字去掉重复的记录。
阅读全文