溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

sql的exits函數(shù)

發(fā)布時間:2020-10-24 13:35:54 來源:網(wǎng)絡(luò) 閱讀:445 作者:灼灼123 欄目:關(guān)系型數(shù)據(jù)庫

oracle的exits函數(shù)
          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中可以查到關(guān)于001基金的所有債券的fene(份額)信息,現(xiàn)在要查詢出‘100253’債券的份額信息;但是fenebiao中沒有fscdm字段,該字段存在于cszqxx表中,cszqxx表于fenebiao的對應(yīng)關(guān)系b.fzqdm = substr(t.fkmbm, 9, 6);之前用的是left join,關(guān)于'100253' cszqxx表中有兩條信息,這樣就會查詢兩個fene。用exits是根據(jù)exits函數(shù)內(nèi)的返回值,過濾主表fenebiao的內(nèi)容。

另外,以下內(nèi)容來自百度知道:

表A(小表),表B(大表)
select * from B where cc in (select cc from A) 這個語句中是先從A表中把cc找出來,然后根據(jù)cc再在B中去找相關(guān)的cc 由于A表的cc遠小于B表的cc 所以可以節(jié)省時間
select * from B exists (select cc from A where cc=B.cc)這句話是先從B表里把cc找出來 然后再在A表里找相關(guān)的cc  由于B表的cc遠多于A表的cc 所以這樣做很浪費時間
 
總結(jié): 用in 時 大表在前小表在后  
        用exists時 小表在前大表在后


2.


   

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI