SQL中exists,not exists的用法

SQL中的exists和in都是表示是否存在,exists强调的是是否返回结果集,exists 与 in 最大的区别在于 in引导的子句只能返回一个字段。

not exists 和not in 分别是exists 和 in 的 互斥条件。

假设表A和B,判断A的数据记录否在B中存在,并且输出A中的key(输出结果中不能含有重复的key),则SQL如下:

select distinct

      A.id

     ,A.name

from

    表A

where exists

          (select

                1

            from

                 B

            where

                   A.x=B.x

            AND A.y=B.y

);

执行上面的SQL便可输出A中在B中的数据记录;

想要输出A中不在B中数据记录,只要将exists改为not exists即可,莫不可将not exists条件改为 下面A和B表的关联条件的否定,即:

                   A.x<>B.x

            OR  A.y<>B.y

将条件改为上述条件后,输出记录会重复输出几条,虽然上面有distinct操作,但影响效率。

 

posted @ 2015-06-28 13:19  Mlj1411  阅读(480)  评论(0编辑  收藏  举报