exists的用法

1、exists的返回结果是bool型,只有true或者false

如 SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE e.a_id='6588' ),返回的结果跟SELECT * FROM alumni_info t一样(a_id=6588存在),因为select语句先执行where条件后的语句,再筛选字段,当执行完where条件后,若这条结果集存在,则where表达式后面永远都是true,否则为false。也就是说要么查询所有,要么没有数据。那么我只想查校友id,为6588的校友,使用exists该怎么写,经过一番测试内查询中的id,必须为外查询的idSELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE t.id_='6588' ),ok,完事.

 

2、如果我想查询所有教育经历的校友,使用exists实现,当然用in实现也一样,不过效率低点
SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE e.a_id=t.ID_ )

 

3、exists的效率比in查询要高,因为IN不走索引,但要看实际情况具体使用,IN适合于外表数据量大而内表数据小的情况;EXISTS适合于外表小而内表大的情况

 

4、exists与not exists是相对应的。

5.必须要含有外部id或者其他外部元素可以达到where条件查询的效果,不然就是查询所有

(转载)

 

转载于:https://www.cnblogs.com/lingtiaoti/p/9349220.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值