oracle中exists用法

 我来答
一半鸾
2018-03-31 · TA获得超过3794个赞
知道小有建树答主
回答量:16
采纳率:0%
帮助的人:5169
展开全部

exists可以说是oracle数据库开发中比较常见的用法,用exists可以提高sql的效率,可以取代in。

  1. 比如   a,b 关联列为 a.id = b.id,现在要取 a 中的数据,其中id在b中也存在:
    select * from a where exists(select 1 from b where a.id = b.id)

  2. 现在要取 a 中的数据,其中id在b中   不存在:
    select * from a where not exists(select 1 from b where a.id = b.id)

用法详解

  • exists是判断exits后面的sql语句是否为真,若为真则整个sql句子成立,否则没有任何记录。例子:

    select 1 from dual where exists (select 1 from dual where 2=1);

    上面的情况肯定是没有记录。

    select 1 from dual where exists (select 1 from dual where 1=1);

    上面的情况是有记录返回的。

  • 判断另外的表中是否包含某个表的外键记录。例子:

    select * from table_test a

    where exists (select 1 from scott.carol_tmp where pps_master=a.pps_master);

    这个sql是要检查table_test中的pps_master是否在carol_tmp中。其实用in也可以实现同样的效果,但是in的话效率要低些,特别是碰上一些大表。用exists和in的性能就体现出来了。

Andy_Sun321
2017-10-27 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:722万
展开全部

一般用做条件判断,可以防止where的条件语句中,也可以放在case when的条件语句中。exits一般就是判断后面所跟的子查询是否有记录,如果有记录存在exists就为true,否则为false。一般格式:

exists (select ....)

例如:

select 'true' as val from dual
where exists (select 1 from dual);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
推荐于2018-02-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3996万
展开全部
比如 a,b 关联列为 a.id = b.id,现在要取 a 中的数据,其中id在b中也存在:

select * from a where exists(select 1 from b where a.id = b.id)

或者:
现在要取 a 中的数据,其中id在b中 不存在:

select * from a where not exists(select 1 from b where a.id = b.id)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unitech2010
2012-08-15 · TA获得超过1062个赞
知道小有建树答主
回答量:1025
采纳率:100%
帮助的人:903万
展开全部
if exists (select * from table whre a=1)--------(如果这个select 语句能查询出资料就执 begin end 中的语句)

begin

end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式