如何理解exists sql

原创 2007年10月10日 12:00:00

  s(s#,sname,age,sex)  
  sc(s#,c#,grade)  
  c(c#,cname,teacher)  
  select   sname   from   s   where   not   exists   (  
  select   *   from   c   where   not   exists(  
  select   *   from   sc   where   sc.s#=s.s#   and   sc.c#=c.c#)   )

 

exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。

exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。

上面这个列子,先查询出s表的结果,然后将结果代入到s.s#,然后再查询出c表中的结果,再一条一条的代入,感觉有点像for的嵌套循环,第一轮外循环中,满足内部的not exists条件的c表中的结果集被保留,然后再判断外部的not exists,这次判断是根据内部C表中被保留的结果集的情况,如果结果集为空,则输出当前这一条S表的结果集;然后再进行第二轮大的循环,即取出s表的第二条结果代入运算。

以上的sql还可以这样理解,最内部的  select   *   from   sc   where   sc.s#=s.s#   and   sc.c#=c.c#是查询出所有已经选择过课程的学生及相应课程,  select   *   from   c   where   not   exists则是所有没有被选择的课程,在这个基础上的  select   sname   from   s   where   not   exists 则是选取所有没有未选择课程的学生,即选择了所有课程的学员名称。

sql中exists和not exists用法

之所以要说这个问题,是因为项目中用到了not exists,但两者写的语句只有一点差别,结果一个有问题了,一个没问题。具体问题下面详细说明,先来看看exists如何应用。 exists: ...
  • u013038643
  • u013038643
  • 2017-05-14 11:16:54
  • 11353

SQL语句中exists/not exists的用法分析

1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨...
  • wozengcong
  • wozengcong
  • 2015-05-18 13:20:06
  • 26262

数据库sql语句的exists总结

数据库sql语句的exists总结 sql exists in 学习   先来比较下语法: --deals=交易表,areas=地域表,例如香港;我们的目的:查看有交易的地域 ...
  • u010408365
  • u010408365
  • 2015-05-08 14:50:10
  • 2155

SQL 子查询 EXISTS 和 NOT EXISTS

MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT … FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子...
  • qq_27571221
  • qq_27571221
  • 2016-11-08 23:00:19
  • 6157

SQL中exists关键字的用法

exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为true或false。     语法: exists subquery     参数: subquery 是一个受限的 ...
  • wangshuxuncom
  • wangshuxuncom
  • 2013-11-05 17:11:09
  • 9286

sql中exists,not exists的用法

exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select ...
  • shan1774965666
  • shan1774965666
  • 2015-02-26 13:20:38
  • 1472

SQL中EXISTS的用法

今天悲剧了,居然没有理解好sql中exists的意思EXISTS指定一个子查询,检测行的存在。 语法EXISTS subquery参数subquery是一个受限的 SELECT 语句 (不允许有 CO...
  • yefengnidie
  • yefengnidie
  • 2011-07-25 14:21:25
  • 7097

关于exists的理解(一)

现在有A表如下:B表如下:现有sql:SELECT ID,`NAME` FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID);显示如下:理解如下...
  • weixin_39428938
  • weixin_39428938
  • 2018-03-26 14:00:37
  • 30

如何理解exists sql

  s(s#,sname,age,sex)     sc(s#,c#,grade)     c(c#,cname,teacher)     select   sname   from   s   wh...
  • xyxieqing
  • xyxieqing
  • 2007-10-10 12:00:00
  • 626

SQL之 exists 、in

tips :  1.外表为大表,内表为小表时,使用exist  2.外表为小表,内表为大表时,使用in 示例:外表大,内表小 create table outTable (id1 int); in...
  • huguangshanse00
  • huguangshanse00
  • 2014-10-24 00:57:53
  • 2086
收藏助手
不良信息举报
您举报文章:如何理解exists sql
举报原因:
原因补充:

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