SQL 左連接 右連接
www.firnow.com 時(shí)間 : 2009-03-02 作者:匿名 編輯:sky 點(diǎn)擊: 1022 [ 評論 ]
A left join(左連接)包含所有的左邊表中的記錄甚至是右邊表中沒(méi)有和它匹配的記錄。
同理,也存在著(zhù)相同道理的 right join(右連接),即包含所有的右邊表中的記錄甚至是左邊表中沒(méi)有和它匹配的記錄。
而full join(全連接)顧名思義,左右表中所有記錄都會(huì )選出來(lái)。
Left join , Right Join, Inner Join 用法(生成新的數據表)
即是多表連接,組成一個(gè)新的數據表輸出!
僅當至少有一個(gè)同屬于兩表的行符合聯(lián)接條件時(shí),內聯(lián)接才返回行。內聯(lián)接消除與另一個(gè)表中的任何行不匹配的行。
例子
Table A
aid adate
1 a1
2 a2
3 a3
TableB
bid bdate
1 b1
2 b2
4 b4
兩個(gè)表a,b相連接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid這是僅取出匹配的數據.
此時(shí)的取出的是:
1 a1 b1
2 a2 b2
那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有數據,然后再加上與a,b匹配的的數據
此時(shí)的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符
同樣的也有right join
指的是首先取出b表中所有數據,然后再加上與a,b匹配的的數據
此時(shí)的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4
LEFT JOIN 或 LEFT OUTER JOIN。
左向外聯(lián)接的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結果集行中右表的所有選擇列表列均為空值。
SQL:JOIN之完全用法
外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接。在 FROM 子句中指定外聯(lián)接時(shí),可以由下列幾組關(guān)鍵字中的一組指定:LEFT JOIN 或 LEFT OUTER JOIN。
左向外聯(lián)接的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結果集行中右表的所有選擇列表列均為空值。
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒(méi)有匹配行,則將為左表返回空值。
FULL JOIN 或 FULL OUTER JOIN。
完整外部聯(lián)接返回左表和右表中的所有行。當某行在另一個(gè)表中沒(méi)有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結果集行包含基表的數據值。
僅當至少有一個(gè)同屬于兩表的行符合聯(lián)接條件時(shí),內聯(lián)接才返回行。內聯(lián)接消除與另一個(gè)表中的任何行不匹配的行。而外聯(lián)接會(huì )返回 FROM 子句中提到的至少一個(gè)表或視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過(guò)左向外聯(lián)接引用的左表的所有行,以及通過(guò)右向外聯(lián)接引用的右表的所有行。完整外部聯(lián)接中兩個(gè)表的所有行都將返回。
文章出處:飛諾網(wǎng)(www.firnow.com):http://dev.firnow.com/course/7_databases/mysql/Mysqljs/20090302/156787.html
聯(lián)系客服