请问not exists和exists的区别
我总也弄不明白
最好能举个例子
小弟不胜感激啊!!!

解决方案 »

  1.   

    分别用以替代not in和in。
    not exists--not in
    exists--in
      

  2.   

    用中文替换
    EXISTS 在....存在
      

  3.   

    select id 
    form student 
    where exists (select 1 
    from student 
    where name = 'fuyou001')上面的意思 是:当存在name 为fuyou001,就了取出student 里的idselect id 
    form student 
    where noet exists (select 1 
    from student 
    where name = 'fuyou001')当不存在name 为fuyou001,就了取出基id
      

  4.   

    create table t_name(name varchar2(30));insert into t_name values('zeng');
    commit;select name 
      from t_name 
     where not exists(select 1 from dual where 1=0);
     
     select name 
      from t_name 
     where not exists(select 1 from dual where 1=1);select name 
      from t_name 
     where exists(select 1 from tt_name where 1=1);
     
    select name 
      from t_name 
     where exists(select 1 from tt_name where 1=0); 挺好玩的,自己试下就明白了
      

  5.   

    简单理解:
    select * from tab where 
     exists
    (select 1 from dual); --只要本行子查询能查询到的记录行数大于0,则exists条件就为真!!
      

  6.   

    select name 
      from t_name 
    where exists(select 1 from tt_name where 1=0); 
      

  7.   

    not exists和exists用来替代not in和in可以提高执行效率
    例子create table c01
    (
    a01id number(10),
    a0102 varchar2(10),
    a0103 varchar2(10),
    a0104 varchar2(10)
    );create table c02
    (
    a02id number(10),
    a0202 varchar2(10),
    a0203 varchar2(10),
    a0204 varchar2(10)
    );begin
    insert into c01 values (1,'aaa','aaa','aaa');
    insert into c01 values (2,'bbb','bbb','bbb');
    insert into c01 values (3,'ccc','ccc','ccc');
    insert into c01 values (4,'ddd','ddd','ddd');
    insert into c01 values (5,'eee','eee','eee');
    end;begin
    insert into c02 values (1,'aaa','aaa','aaa');
    insert into c02 values (2,'bbb','bbb','bbb');
    insert into c02 values (3,'ccc','ccc','ccc');
    insert into c02 values (7,'ddd','ddd','ddd');
    insert into c02 values (8,'eee','eee','eee');
    end;select * from c01 a where not exists (select 'x' from c02 c where a.a01id=c.a02id);select * from c01 a where exists (select 'x' from c02 c where a.a01id=c.a02id);
      

  8.   

    not exists和exists用来替代not in和in可以提高执行效率是错误的认识,某些场景里会适得其反..