久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

oracle中右表有過濾條件的left outer join

 張小龍net館藏 2018-03-05

oracle中l(wèi)eft outer join就是以左表作為基表來進行連接操作,連接的結(jié)果中一定會涵蓋基表中所有的列,,即使有某些列與右表找不到匹配關(guān)系。如下分別是city表和stds表中的數(shù)據(jù)截圖:

   


現(xiàn)在執(zhí)行以下語句:
select city.name,stds.sid,stds.sname from city left outer join stds on city.id=stds.cid;
其結(jié)果截圖如下,,即使沒有湖南的學(xué)生,,湖南那一項仍然在結(jié)果集中,因為city表是基表,,它的每一項都會在結(jié)果集中,。



現(xiàn)在我們假如要獲取sid不等于4的情況的左連接結(jié)果,那么有兩種選擇,,一種是在on中添加條件限制,,一種是在where中添加條件限制,我們現(xiàn)在來測試兩種結(jié)果是否相同,。

先執(zhí)行在on中添加條件,,執(zhí)行以下語句:
select city.name,stds.sid,stds.sname from city left outer join stds on city.id=stds.cid and stds.sid!=4;
執(zhí)行結(jié)果和執(zhí)行計劃如下:



查看執(zhí)行結(jié)果,我們可以看到結(jié)果中仍然包括了基表,,也就是city表中的所有行,。然后再查看執(zhí)行計劃,可以看到先是ACCESS內(nèi)層的STDS表,,并且加上filter(SID<>4),,然后再和外層的CITY表進行左連接操作,所以仍然可以保證city表中每一行都在結(jié)果集中,。


再執(zhí)行where中添加條件,,執(zhí)行語句如下:
select city.name,stds.sid,stds.sname from city left outer join stds on city.id=stds.cid where stds.sid!=4
其執(zhí)行結(jié)果如下圖所示:


由于sql的執(zhí)行順序是先from得到源數(shù)據(jù),再where篩選數(shù)據(jù),,最后select投影數(shù)據(jù),。先join之后,結(jié)果集中應(yīng)該有
sid為null的結(jié)果項,,但是由于oracle中任何與null做=或者,!=等邏輯判斷得到的結(jié)果都是unknown,歸為false,
所以sid為null的項最終會被剔除掉,,而sid=4的數(shù)據(jù)項也會被剔除掉,,所以才出現(xiàn)了上述結(jié)果。


下面是做的一個null做等于判斷和不等于判斷的截圖:



所以如果做左外連接時,,如果右表帶條件約束,,它把條件約束放在on中和where中得到的結(jié)果是不一樣的,這時需要根據(jù)自己的需求進行選擇,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多