sql的exits函数

67次阅读
没有评论

共计 730 个字符,预计需要花费 2 分钟才能阅读完成。

自动写代码机器人,免费开通

oracle 的 exits 函数
      select t.fene
          from fenebiao t
          where t.code = 001 and date = to_date(2017-07-17 , yyyy-mm-dd)
          and exists (select 1 from  cszqxx b
          where  b.fzqdm = substr(t.fkmbm, 9, 6)
          and b.fscdm = 100253 )

分析:从 fenebiao 中可以查到关于 001 基金的所有债券的 fene(份额)信息,现在要查询出‘100253’债券的份额信息;但是 fenebiao 中没有 fscdm 字段,该字段存在于 cszqxx 表中,cszqxx 表于 fenebiao 的对应关系 b.fzqdm = substr(t.fkmbm, 9, 6);之前用的是 left join, 关于 100253 cszqxx 表中有两条信息,这样就会查询两个 fene。用 exits 是根据 exits 函数内的返回值,过滤主表 fenebiao 的内容。

另外,以下内容来自百度知道:

表 A(小表),表 B(大表)
select * from B where cc in (select cc from A) 这个语句中是先从 A 表中把 cc 找出来, 然后根据 cc 再在 B 中去找相关的 cc 由于 A 表的 cc 远小于 B 表的 cc 所以可以节省时间
select * from B exists (select cc from A where cc=B.cc)这句话是先从 B 表里把 cc 找出来 然后再在 A 表里找相关的 cc  由于 B 表的 cc 远多于 A 表的 cc 所以这样做很浪费时间
 
总结: 用 in 时 大表在前小表在后  
  用 exists 时 小表在前大表在后

2.

 

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计730字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)