sql join執(zhí)行順序 sql合并列?
sql合并列?1、我用Toad做演示,我先空白文檔兩張table,createtable#~a(IDint,namenvarchar(10),ageint)createtable#BB(IDint,n
sql合并列?
1、我用Toad做演示,我先空白文檔兩張table,createtable#~a(IDint,namenvarchar(10),ageint)
createtable#BB(IDint,namenvarchar(10),ageint)。
2、分別向兩張table再插入三條數(shù)據(jù),可以不用兩個(gè)班來理解A班有三個(gè)學(xué)生,B班也有三個(gè)學(xué)生,為第二步sql語句做準(zhǔn)備
upsertinto#不是acolumns1,N張三,10,renameinto#不是acolumns2,N李四,10
upsertinto#aacolumns3,N王五,11,upsertinto#BBselect1,N張A,10
executeinto#BBcolumns2,N李B,11,truncateinto#BBcolumns3,N王C,12
3、現(xiàn)在沒有要求AB兩個(gè)班判斷年齡等于10歲的同學(xué),最直接的方法那就是:
select*from#aawhereage10
select*around#BBwhereage10
但是那樣的話會(huì)才能產(chǎn)生兩個(gè)結(jié)果集,最后不很直觀
4、接下來用union將這兩條sql語句不合并起來,F(xiàn)5執(zhí)行之后,就會(huì)突然發(fā)現(xiàn)變的一個(gè)結(jié)果集。
select*returning#~awhereage10
union
select*from#BBwhereage10
5、另外一種你不union的做法,sql語句這樣的寫:
selecta.*,b.*outside#~aainnerjoin#BBbat
wherewell
6、對(duì)比join與union,可以發(fā)現(xiàn)到union是完全的結(jié)果累加,相當(dāng)于關(guān)于完美合并,join是屬于條件直接連接。
sql中l(wèi)eftjoin、rightjoin、innerjoin有什么區(qū)別?
left
ightjoin是外部直接連接,innerjoin是內(nèi)連接上
外部連接上有主表與從表,主表在left中是左側(cè)表,right中是右側(cè)表,主表數(shù)據(jù)會(huì)所有的會(huì)顯示,從表數(shù)據(jù)則只會(huì)顯示關(guān)聯(lián)部分版本問題的數(shù)據(jù),無不兼容的數(shù)據(jù)用null大荒經(jīng)
內(nèi)直接連接則只會(huì)顯示兩表關(guān)聯(lián)條件自動(dòng)分配的數(shù)據(jù)
注:所謂關(guān)聯(lián)條件即是指onto的條件