实际测试了一下,换成null也能正确处理啊。

解决方案 »

  1.   

    exists(...)
    只返回 TRUE 或 FALSE 值没有错。就相当于 
    1 = 1 -- return true
    2 = 1 -- return false
    exists(select ...)   -- 如果存在记录,返回true,负责返回false
      

  2.   

    victorycyz(中海,学SQL Server的菜鸟)下面的查询查找所有出版商业书籍的出版商的名称:
    USE pubs
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (select null)
     这个能查出来吗?????
      

  3.   

    USE pubs
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (select null)
     这个能查出来吗?????
    ----
    可以查询出来,原因是
    EXISTS (select null)返回了true因为select null返回的是一条记录,那么exists判断()里面是否存在着记录,如果存在则是true,所以这里就是true了。既然返回的是true,那就可以查询出来了。
      

  4.   

    如?
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (select null where 1 = 0)select null where 1 = 0返回的是空记录,那么exists返回false,查询不出结果。
      

  5.   

    exists(查询语句)它判断查询语句的是否有记录,如果没有,就返回false,否则返回true
    对于:
    WHERE EXISTS (select null)因为:
    select null
    始终有一条记录,所以相当于没有使用条件.
      

  6.   

    --换句话说.对于:where exists(查询语句)将查询语句单独执行,如果执行后:
    @@rowcount=0
    则exists返回false
    否则返回true
      

  7.   

    几位大哥说的,我也理解
    我的意思是:
    USE pubs
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (select null)
    这个能查出所有出版商业书籍的出版商的名称,
    我想应该不可能吧,它查询出来的是所有的记录,我也知道select null是返回一个true,USE pubs
    SELECT pub_name
    FROM publishers
    WHERE EXISTS
       (SELECT *
       FROM titles
       WHERE pub_id = publishers.pub_id
          AND type = 'business')
    总个上面的查询我可以把它分两步
    一就是:
    SELECT *FROM titles WHERE pub_id = publishers.pub_id AND type = 'business'
    查出书的种类是商业书籍,
    二:
    SELECT pub_name FROM publishers where.....
    这个查询就是在上面查询出来的结果的前提下再进一步的查询,这样查询的范围就比以前要缩小了(只查找商业书籍).
    但是按联机丛书的介绍第一个查询返回的是true和false,那它怎么又能形成第二个查询的数据条件呢???
      

  8.   

    exists(...)
    只返回 TRUE 或 FALSE 值没有错。
    相关子查询
      

  9.   

    to  glwdpy(paopaolong):你完全把“第一”和“第二”搞反了。按照你的逻辑,“pub_id = publishers.pub_id”根本无从下手,你怎么查?第一个都不成立,还怎么“缩小范围”?事实上,系统遍历每一个publishers记录,对每一个记录执行内层查询。理论上应该讨论那个表放在外层更合适的问题,从而提高效率。不过SQL Server足够聪明,它将exists嵌套查询转化为inner join然后进行查询优化的规划工作。