您好,登錄后才能下訂單哦!
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.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。