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

原创 2007年09月19日 09:51:00

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条件为真,所示查询结果与上例正好相反。 

相关文章推荐

oracle exists子查询出现rownum引起性能问题的优化

生产环境中有一支SQL消耗cpu资源很大,逻辑读为299361,相关问题描述: Rationale The SQL spent 100% of its database time on CPU, I/...

JOIN与EXISTS(子查询)的效率研究

使用MySQL提供的Sample数据库Sakila 现将profiling打开,用来一会查看sql执行时间 set profiling=1;  exists 子查询与 join联接效...

如何让in/exists 子查询(半连接)作为驱动表?

一哥们问我,怎么才能让子查询作为驱动表? SQL如下: select rowid rid from its_car_pass7 v where 1 = 1 and pass_da...

黑马程序员 有关 sqlServer 当没有用 EXISTS 引入子查询时,错误信息

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------   ...

带有EXISTS谓词的子查询

EXISTS代表存在量词 。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 例如:三个表: student(sno,sname,ssex,sage...

如何让in/exists 子查询(半连接)作为驱动表?

怎么才能让子查询作为驱动表? SQL如下: [html] view plaincopyprint? select  rowid rid      from...
  • jumewo
  • jumewo
  • 2014年08月15日 17:57
  • 343

表连接,子查询,exists

表连接的本质数据库连接的本质:引用。

关于所使用的spark版本中的spark sql不支持exists和in等子查询语句的解决方案记录

stackoverflow上一篇很好的问题解答解决方法: SparkSQL doesn't currently have EXISTS & IN. "(Latest) Spark ...

mysql 子查询in与exists互换

用mysql子查询in写sql语句逻辑比较明确,但是使用in有一定的缺陷,比如in的结果集长度是受限制的,大数据量的时候无法使用,同时在大数据量的时候,使用in,查询的性能有一定变慢。综合考虑,将原先...

带有exists谓词的子查询 嵌套查询

Exists,NOT EXISTS: 1.含义:带有exists谓词的子查询不返回任何实际数据,它只产生逻辑真值true或逻辑假值false。 2.查询所有选修了c1号课程的学生姓名:    s...
  • lvzhifu
  • lvzhifu
  • 2012年02月02日 21:57
  • 530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:懒人摘抄(内容转自CSDN资源中教程)-数据查询08-带EXISTS测试的子查询
举报原因:
原因补充:

(最多只允许输入30个字)