資源描述:
《SQL左右內(nèi)連接分析資料.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、TableAaidadate1al2a23a3TableBbidbdate1bl2b24b4兩個表a,b相連接,要取出id相同的字段select*fromainnerjoinbona.aid=b.bid這是僅取出匹配的數(shù)據(jù).此時的取出的是:1albl2a2b2那么leftjoin指:select*fromaleftjoinbona.aid=b.bid首先取出“表屮所有數(shù)據(jù),然后再加上與a,b匹配的的數(shù)據(jù)此時的取出的是:1albl2a2b23a3空字符同樣的也有rightjoin指的是首先取出b表中所有數(shù)據(jù),然后再加上與a,b匹配的的數(shù)據(jù)此時的取出的是:1albl2a2b2
2、4空字符b4LEFTJOIN或LEFTOUTERJOINo左向外聯(lián)接的結(jié)果集包括LEFTOUTER了句屮指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表屮沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行屮右表的所有選擇列表列均為空值22.leftjoin/righ表A記錄如下:alD12aNuma20050111a200501123a2005()1134a200501145a20050115表B記錄如下:blDbName1200603240122006032402320060324034200603240482(X)6032408實驗如下:1.leftjoinsql語
3、句如卜:SELECT*FROMALEFTJOINBONA.aID=B.bID結(jié)果如下:alDaNumblDbName1a20050111120060324012a20050112220060324023a20050113320060324034a20050114420060324045a20050115NULLNULL(所影響的行數(shù)為5行)結(jié)果說明:leftjoin是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,leftjoin是以左表為準的.換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為:A.alD=B.blD).B
4、表記錄不足的地方均為NULL.2.rightjoinsql語彳U如下:SELECT*FROMARIGHTJOINBONA.aID=B.bID結(jié)果如下:blDbName2006032401220060324022006032403alDaNum1a2005011112a200501123a2005011320060324()420060324081a200501144NULLNULL8(所影響的行數(shù)為5行)結(jié)果說明:仔細觀察一下,就會發(fā)現(xiàn),和leftjoin的結(jié)果剛好相反,這次是以右表(B)為基礎(chǔ)的,A表不足的地方用NULL填充.3.innerjoinsql語句如下:SEL
5、ECT*FROMAINNERJOINBONA.alD==B.blD結(jié)果如下:alDaNumblDbName1a20050111120060324012a20050112220060324023a20050113320060324034a2005011442006032404結(jié)果說明:很明顯,這里只顯示出了A.alD=B.blD的記錄.這說明innerjoin并不以誰為基礎(chǔ),它只顯示符合條件的記錄.