日期:2014-05-16  浏览次数:20383 次

exists 和 管理查询的 区别

exists

select forminfoim0_.C_FORMNO
from FORMINFO forminfoim0_ where
(exists (select formquesti1_.C_FORMNO from FORMQUESTION formquesti1_ where forminfoim0_.C_FORMNO=formquesti1_.C_FORMNO and formquesti1_.C_FORMNO = 'NLCA1763'
and formquesti1_.C_QUE_TIME>='2012-02-01' and formquesti1_.C_QUE_TIME<='2012-02-10' and forminfoim0_.N_TYPE='0') ) 

 

关联查询


select fo.c_formno from forminfo fo , formquestion forq where fo.c_formno =  forq.c_formno
 and forq.C_QUE_TIME>='2012-02-01' and forq.C_QUE_TIME<='2012-02-10' and fo.N_TYPE='0' ;

 

两个sql 看起来是等价的, 但是当 在 FORMQUESTION 表中存在 相同的 C_FORMNO 的时候 , 就出现了不同  ,这事 管理查询命中的数数会比exists多, 这里要注意哦!