共计 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 网 – 提供最优质的资源集合!