SQL的各種連接Join案例詳解
最常見的 JOIN 類型:SQL INNER JOIN(簡單的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一種是內(nèi)連接,后三種是外鏈接。
假設(shè)我們有兩張表,Table A是上邊的表,Table B是下邊的表。
Table A
| id | name |
| 1 | |
| 2 | 淘寶 |
| 3 | 微博 |
| 4 |
Table B
| id | address |
| 1 | 美國 |
| 5 | 中國 |
| 3 | 中國 |
| 6 | 美國 |
一、INNER JOIN
內(nèi)連接是最常見的一種連接,只連接匹配的行。
inner join語法
select column_name(s) from table 1 INNER JOIN table 2 ON table 1.column_name=table 2.column_name
注釋:INNER JOIN與JOIN是相同

INNER JOIN產(chǎn)生的結(jié)果集中,是1和2的交集。
select * from Table A inner join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國 | |
| 3 | 微博 | 中國 |
二、LEFT JOIN
LEFT JOIN返回左表的全部行和右表滿足ON條件的行,如果左表的行在右表中沒有匹配,那么這一行右表中對應(yīng)數(shù)據(jù)用NULL代替。
LEFT JOIN 語法
select column_name(s) from table 1 LEFT JOIN table 2 ON table 1.column_name=table 2.column_name
注釋:在某些數(shù)據(jù)庫中,LEFT JOIN 稱為LEFT OUTER JOIN

LEFT JOIN產(chǎn)生表1的完全集,而2表中匹配的則有值,沒有匹配的則以null值取代。
select * from Table A left join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國 | |
| 2 | 淘寶 | null |
| 3 | 微博 | 中國 |
| 4 | null |
三、RIGHT JOIN
RIGHT JOIN返回右表的全部行和左表滿足ON條件的行,如果右表的行在左表中沒有匹配,那么這一行左表中對應(yīng)數(shù)據(jù)用NULL代替。
RIGHT JOIN語法
select column_name(s) from table 1 RIGHT JOIN table 2 ON table 1.column_name=table 2.column_name
注釋:在某些數(shù)據(jù)庫中,RIGHT JOIN 稱為RIGHT OUTER JOIN

RIGHT JOIN產(chǎn)生表2的完全集,而1表中匹配的則有值,沒有匹配的則以null值取代。
select * from Table A right join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國 | |
| 5 | null | 中國 |
| 3 | 微博 | 中國 |
| 6 |
四、FULL OUTER JOIN
FULL JOIN 會從左表 和右表 那里返回所有的行。如果其中一個表的數(shù)據(jù)行在另一個表中沒有匹配的行,那么對面的數(shù)據(jù)用NULL代替
FULL OUTER JOIN語法
select column_name(s) from table 1 FULL OUTER JOIN table 2 ON table 1.column_name=table 2.column_name

FULL OUTER JOIN產(chǎn)生1和2的并集。但是需要注意的是,對于沒有匹配的記錄,則會以null做為值。
select * from Table A full outer join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國 | |
| 2 | 淘寶 | null |
| 3 | 微博 | 中國 |
| 4 | null | |
| 5 | null | 中國 |
| 6 | null | 美國 |
到此這篇關(guān)于SQL的各種連接Join案例詳解的文章就介紹到這了,更多相關(guān)SQL Join內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)設(shè)計之權(quán)限的實(shí)現(xiàn)
這篇文章主要介紹了數(shù)據(jù)設(shè)計之權(quán)限的實(shí)現(xiàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08
Sql Server下數(shù)據(jù)庫鏈接的使用方法
Sql Server下數(shù)據(jù)庫鏈接的使用方法...2006-12-12
IntellJ Idea 2020版添加sqlite數(shù)據(jù)庫的方法
這篇文章主要介紹了IntellJ Idea 2020版添加sqlite數(shù)據(jù)庫的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
帶參數(shù)的sql和不帶參數(shù)的sql存儲過程區(qū)別
來執(zhí)行我們sql語句,看到很多分頁存儲過程都是直接拼湊sql語句然后用exec('')執(zhí)行起來了,這個從效率和安全上面來說,都是不推薦的。2008-09-09
多種獲取遠(yuǎn)程連接access數(shù)據(jù)庫的方法
多種獲取遠(yuǎn)程連接access數(shù)據(jù)庫的方法...2007-03-03

