sql 子查询中的exists  和 in_习惯累积沉淀_新浪博客

exists貌似不是标准sql 

exists()是用来判断括号里面的值或者结果集是否为null的,
 返回的是bool类型的,比如select * from a where exists(select 1 from b where id=a.id), 同(select id from b where id = a.id)
如果select 1 from b where id=a.id这一句能查出来数据,那么查出来的a表中的数据是这样写是一样的
:select * from a where id in(select id from b);只不过在用in查询的时候要进行全表查询,效率没有exists高

 如果子查询中要处理的少,用in  //where t.id in ('040000000000PS','040000000000QV') 
 查询结果多,或条件多于1个用exists

select * from J_YHDA t
where exists (select null from dual) //oracle中这样写. 在子查询中使用 NULL 仍然返回结果集 等同select all .没where
别的数据库好像这样写也行
select * from J_YHDA t
 where exists (select null )

select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
 select * from TableIn where ANAME in(select BNAME from TableEx) //这俩结果一样     (第一个相关,第二个非相关, 效率不好说)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值