自连接的应用和生命力是蛮广泛和深刻的,也是我考试时候的十分要注意的地方!
关系代数,和SQL中都有着自连接的身影。
1.先来一个前导引入哈哈:
查询:查询选修1号同学选修的课程的学生学号。
分析:这个查询语句的含义是:选修1号同学他所选修的课程的一门,两门,多门甚至所有全部都是可以的,这里是只要有就行了!
这里这个语句的选修的词后面有隐含的从1门到所有的意思. (between 1 and all)
先用关系代数语言来解决:
有不完善的地方希望大佬门或未来的我自己再来指正修改哒2333
SQL语言实现:
select * from sc;
第一种方案就是我们讲的自连接啦:
select distinct sc1.sno/*去重*/
from sc as sc1,sc as sc2
where sc2.sno='1'
and sc1.cno=sc2.cno;/*可能会出现重复,没有去重,so*/
效果如