懒人摘抄(内容转自CSDN资源中教程)-数据查询08-带EXISTS测试的子查询

EXISTS测试的子查询

   在子查询中,还可以使用EXISTS,它一般用在WHERE子句中,其后紧跟一个SQL子查询,从而构成一个条件,当该子查询至少存在一个返回值时,这个条件为真(.T.),否则为假(.F.)

注意:使用EXISTS引入的子查询在以下几方面与其它子查询略有不同:

·  EXISTS关键字前面没有列名、常量或其它表达式。

·  EXISTS引入的子查询的选择列表通常几乎都是由星号(*)组成。由于只是测试是否存在符合子查询中指定条件的行,所以不必列出列名。

【例5.30查询所有任课教师的tnamedepart

SELECT tname,depart

FROM teacher a

WHERE EXISTS

   (SELECT *

     FROM course b

     WHERE a.tno=b.tno)

本例执行结果如下:

tname    depart    

-------- ----------

李诚       计算机系 

王萍       计算机系 

张旭       电子工程系

本例也有一个相关子查询,其执行过程是:从头到尾扫描teacher表的行,对于每个行,执行子查询,此时,a.tno是一个常量,子查询便是在course表中查找tno等于该常量的行,如果存在这样的行,EXISTS子句便返回真,主查询屏幕显示teacher表中的当前行;如果子查询未找到这样的行,EXISTS子句返回假,主查询不显示teacher表中的当前行。主查询继续查找teacher表的下一行,其过程与上述相同。

5.31查询所有未讲课的教师的tnamedepart

SELECT tname,depart

FROM teacher a

WHERE NOT EXISTS

(SELECT *

    FROM course b

    WHERE a.tno=b.tno)

本例执行结果如下:

tname    depart    

-------- ----------

刘冰       电子工程系

本例的执行过程与上例基本相同,只是将 EXISTS 子句的结果取反,当子查询找到了这样的行, WHERE 条件为假;当子查询未找到这样的行,则 WHERE 条件为真,所示查询结果与上例正好相反。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值