select student.* from student join (select c_id from score where score.s_id=01)tmp1 join (select s_id,c_id from score)tmp2 on tmp1.c_id =tmp2.c_id and student.s_id =tmp2.s_id where student.s_id not in('01') group by student.s_id,s_name,s_birth,s_sex;
时间: 2024-04-28 16:26:28 浏览: 183
这是一个 SQL 查询语句,它的作用是查询与学生 s_id 为 01 的学生在同一个课程中的其他学生信息。具体来说,它使用了三个子查询。第一个子查询是用来查询 s_id 为 01 的学生所选的课程 c_id,第二个子查询是用来查询所有学生所选的课程和对应的 s_id 和 c_id,第三个子查询是将第一个和第二个子查询的结果进行关联,找到和 s_id 为 01 的学生选了相同课程的其他学生的信息。最后,使用了 group by 子句对结果进行分组,输出了其他学生的 s_id、s_name、s_birth、s_sex 等信息。
相关问题
8、select student.* from student left join (select s_id from score join (select c_id from course join teacher on course.t_id=teacher.t_id and t_name='张三')tmp2 on score.c_id=tmp2.c_id )tmp on student.s_id = tmp.s_id where tmp.s_id is null;关系代数表达式
这条 SQL 查询语句的关系代数表达式如下:
π<sub>student.*</sub> (student) - π<sub>tmp.s_id</sub> (σ<sub>tmp.s_id is not null</sub> (student ⨝<sub>s_id=s_id</sub> tmp))
其中,π 表示投影运算符,σ 表示选择运算符,⨝ 表示自然连接运算符,tmp 是一个子查询结果的别名,其代表的是选取该老师所教授的课程的成绩表中的学生 ID,然后与学生表进行左连接,最终选取左表中存在但右表中不存在的学生记录。
6、select * from student join (select s_id from score where c_id =1 )tmp1 on student.s_id=tmp1.s_id join (select s_id from score where c_id =2 )tmp2 on student.s_id=tmp2.s_id;
这是一个 SQL 语句,实现了查询同时选了课程1和课程2的学生的信息。其中,子查询 (select s_id from score where c_id =1 )tmp1 返回了选了课程1的学生的学号,子查询 (select s_id from score where c_id =2 )tmp2 返回了选了课程2的学生的学号,然后通过这两个子查询的结果进行了内连接(JOIN)操作,得到了选了课程1和课程2的学生的信息。
阅读全文