not exists的理解

mysql中not exists

表结构:

Student(Sno, Sname, Ssex, Sage, Sdept)
Course(Cno, Cname, Cpno, Ccredit)
Sc(Sno, Cno, Grade)

题目

查询选修了全部课程的学生姓名
即:没有一门课程是没有选修的
select Sname
from Student
where not exists(
select *
from Course
where not exists(
select *
from sc
where Student.Sno = sno and Cno = Course.Cno
)
)

执行顺序

首先取出Student的第一行,再取出Course的第一行,在最内层子查询判断表sc是否存在满足条件的行,若存在,(select * from sc where Student.Sno = sno and Cno = Course.Cno)返回FALSE,select * from Course where not exists返回TRUE,最后返回Student的第一行的Sanme,反之相反。
下次再选择Course的第二行,直到遍历Course表。之后选择Student的第二行
循环执行上述操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值