exists 是Oracle sql中的一个函数。表示是否存在符合某种条件的记录。
1、exists是判断exits后面的sql语句是否为真,若为真则整个sql句子成立,否则没有任何记录。例子:select 1 from dual where exists (select 1 from dual where 2=1);上面的情况肯定是没有记录。
2、在Oracle存储过程中,可以使用PL/SQL语句来判断某个表是否存在。
3、用dba用户登录数据库,查询dba_objects表如下:select * from dba_objects where object_name=大写表名有记录就是存在,没记录就不存在。
用法详解 exists是判断exits后面的sql语句是否为真,若为真则整个sql句子成立,否则没有任何记录。例子:select 1 from dual where exists (select 1 from dual where 2=1);上面的情况肯定是没有记录。
传统上认为,如果子查询的条件更具选择性(selective),就用in;而如果父查询(外层查询)的条件更具选择性(selective),就用exist。具体的内容可以参考以下oracle原厂的手册,不好意思,oracle的原厂手册都是英文版的。
exists 是Oracle sql中的一个函数。表示是否存在符合某种条件的记录。
第一个语句:SELECT COUNT(1) FROM DUAL WHERE EXISTS (SELECT 1 FROM XXX WHERE YY IS NOT NULL);结果只能是1或者0。
1、适用表的类型不同。in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外面的表结果集大的情况。
2、从我的角度来说,in的方式比较直观,exists则有些绕,而且in可以用于各种子查询,而exists好像只用于关联子查询(其他子查询当然也可以用,可惜没意义)。
3、In适合内外表都很大的情况,exists适合外表结果集很小的情况。In和exists对比:若子查询结果集比较小,优先使用in,若外层查询比子查询小,优先使用exists。
4、对于in 和 exists的性能区别:如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。