SQL聯(lián)合查詢(內(nèi)聯(lián)、左聯(lián)、右聯(lián)、全聯(lián))的語(yǔ)法
概述:
聯(lián)合查詢效率較高,舉例子來說明聯(lián)合查詢:內(nèi)聯(lián)inner join 、左聯(lián)left outer join 、右聯(lián)right outer join 、全聯(lián)full outer join 的好處及用法。
聯(lián)合查詢效率較高,以下例子來說明聯(lián)合查詢(內(nèi)聯(lián)、左聯(lián)、右聯(lián)、全聯(lián))的好處:
T1表結(jié)構(gòu) |
userid |
username |
password |
|
1 |
jack |
jackpwd |
|
2 |
owen |
owenpwd |
| |||
T2表結(jié)構(gòu) |
userid |
jifen |
dengji |
|
1 |
20 |
3 |
|
3 |
50 |
6 |
第一:內(nèi)聯(lián)(inner join)。
如果想把用戶信息、積分、等級(jí)都列出來,那么一般會(huì)這樣寫:select * from T1 ,T3 where T1.userid = T3.userid(其實(shí)這樣的結(jié)果等同于select * from T1 inner join T3 on T1.userid=T3.userid )。
把兩個(gè)表中都存在userid的行拼成一行(即內(nèi)聯(lián)),但后者的效率會(huì)比前者高很多,建議用后者(內(nèi)聯(lián))的寫法。
SQL語(yǔ)句:select * from T1 inner join T2 on T1.userid=T2.userid
運(yùn)行結(jié)果 |
T1.userid |
username |
password |
T2.userid |
jifen |
dengji |
|
1 |
jack |
jackpwd |
1 |
20 |
3 |
第二:左聯(lián)(left outer join)。
顯示左表T1中的所有行,并把右表T2中符合條件加到左表T1中;右表T2中不符合條件,就不用加入結(jié)果表中,并且NULL表示。
SQL語(yǔ)句:select * from T1 left outer join T2 on T1.userid=T2.userid
運(yùn)行結(jié)果 |
T1.userid |
username |
password |
T2.userid |
jifen |
dengji |
|
1 |
jack |
jackpwd |
1 |
20 |
3 |
|
2 |
owen |
owenpwd |
NULL |
NULL |
NULL |
第三:右聯(lián)(right outer join)。
顯示右表T2中的所有行,并把左表T1中符合條件加到右表T2中;左表T1中不符合條件,就不用加入結(jié)果表中,并且NULL表示。
SQL語(yǔ)句:select * from T1 right outer join T2 on T1.userid=T2.userid
運(yùn)行結(jié)果 |
T1.userid |
username |
password |
T2.userid |
jifen |
dengji |
|
1 |
jack |
jackpwd |
1 |
20 |
3 |
|
NULL |
NULL |
NULL |
3 |
50 |
6 |
第四:全聯(lián)(full outer join)。
顯示左表T1、右表T2兩邊中的所有行,即把左聯(lián)結(jié)果表+右聯(lián)結(jié)果表組合在一起,然后過濾掉重復(fù)的。
SQL語(yǔ)句:select * from T1 full outer join T2 on T1.userid=T2.userid
運(yùn)行結(jié)果 |
T1.userid |
username |
password |
T2.userid |
jifen |
dengji |
|
1 |
jack |
jackpwd |
1 |
20 |
3 |
|
2 |
owen |
owenpwd |
NULL |
NULL |
NULL |
|
NULL |
NULL |
NULL |
3 |
50 |
6 |
總結(jié),關(guān)于聯(lián)合查詢,效率的確比較高,4種聯(lián)合方式如果可以靈活使用,基本上復(fù)雜的語(yǔ)句結(jié)構(gòu)也會(huì)簡(jiǎn)單起來。這4種方式是:1)Inner join 2)left outer join 3)right outer join 4)full outer join
posted on 2014-10-12 23:27 阿九 閱讀(106) 評(píng)論(0) 編輯 收藏 所屬分類: sql server