SQL语句值left join,right join,inner join的用法
sql語句中兩表連結方式主要有一下3中,需要注意的時在進行多表連結的時候必須要用 on 指定表中的某個字段作為連結的條件
left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 -----結果集的條目數以左表為準
right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄------結果集的條目數以右表為準
inner join(等值連接) 只返回兩個表中聯結字段相等的行------結果集的條目數為聯結字段相等的行數
看一下例子
Table_1
1??????? ??? ?t1?????? ??? ?張三?????? ??? ?男??????? ?
2??????? ??? ?t1?????? ??? ?小白?????? ??? ?女??????? ?
3??????? ??? ?t1?????? ??? ?王子?????? ??? ?男??????? ?
4??????? ??? ?t1?????? ??? ?王小?????? ??? ?女??????? ?
5??????? ??? ?t1?????? ??? ?李白?????? ??? ?男??????? ?
6??????? ??? ?t1?????? ??? ?趙虎?????? ??? ?男??????? ?
7??????? ??? ?t1?????? ??? ?張果?????? ??? ?女????????
-----------------------------------------------------------------------------------------
Table_2
1??????? ??? ?t2?????? ??? ?王五?????? ?
2??????? ??? ?t2?????? ??? ?小五?????? ?
4??????? ??? ?t2?????? ??? ?王五?????? ?
5??????? ??? ?t2?????? ??? ?趙雪?????? ?
8??????? ??? ?t2?????? ??? ?張龍???????
??
------------------------------------------------------------------------------------------
left join
select * from Table_1 left join Table_2 on Table_1.ID = Table_2.ID
結果是:
1??????? ??? ?t1?????? ??? ?張三?????? ??? ?男??????? ??? ?1??????? ??? ?t2?????? ??? ?王五?????? ?
2??????? ??? ?t1?????? ??? ?小白?????? ??? ?女??????? ??? ?2??????? ??? ?t2?????? ??? ?小五?????? ?
3??????? ??? ?t1?????? ??? ?王子?????? ??? ?男??????? ??? ?NULL?? ?NULL?? ?NULL
4??????? ??? ?t1?????? ??? ?王小?????? ??? ?女??????? ??? ?4??????? ??? ?t2?????? ??? ?王五?????? ?
5??????? ??? ?t1?????? ??? ?李白?????? ??? ?男??????? ??? ?5??????? ??? ?t2?????? ??? ?趙雪?????? ?
6??????? ??? ?t1?????? ??? ?趙虎?????? ??? ?男??????? ??? ?NULL?? ?NULL?? ?NULL
7??????? ??? ?t1?????? ??? ?張果?????? ??? ?女??????? ??? ?NULL?? ?NULL?? ?NULL
--------------------------------------------------------------------------------------------
right join
SELECT * FROM Table_1 right join Table_2 on Table_1.ID = Table_2.ID
結果是:
1??????? ??? ?t1?????? ??? ?張三?????? ??? ?男??????? ??? ?1??????? ??? ?t2?????? ??? ?王五?????? ?
2??????? ??? ?t1?????? ??? ?小白?????? ??? ?女??????? ??? ?2??????? ??? ?t2?????? ??? ?小五?????? ?
4??????? ??? ?t1?????? ??? ?王小?????? ??? ?女??????? ??? ?4??????? ??? ?t2?????? ??? ?王五?????? ?
5??????? ??? ?t1?????? ??? ?李白?????? ??? ?男??????? ??? ?5??????? ??? ?t2?????? ??? ?趙雪?????? ?
NULL?? ?? NULL?? ?? NULL?? ????? NULL?? ? ? ? 8??????? ??? ?t2?????? ??? ?張龍???????
--------------------------------------------------------------------------------------------
inner join
select * from Table_1 inner join Table_2 on Table_1.ID=Table_2.ID
結果是:
1??????? ??? ?t1?????? ??? ?張三?????? ??? ?男??????? ??? ?1??????? ??? ?t2?????? ??? ?王五?????? ?
2??????? ??? ?t1?????? ??? ?小白?????? ??? ?女??????? ??? ?2??????? ??? ?t2?????? ??? ?小五?????? ?
4??????? ??? ?t1?????? ??? ?王小?????? ??? ?女??????? ??? ?4??????? ??? ?t2?????? ??? ?王五?????? ?
5??????? ??? ?t1?????? ??? ?李白?????? ??? ?男??????? ??? ?5??????? ??? ?t2?????? ??? ?趙雪???????
----------------------------------------------------------------------------------------------
?總結:left join與right join 的區別主要是在于基礎表是左表還是右表,對于不滿足基礎表聯結字段的行將會有null填充 ??
?語法:from Table_1 LEFT JOIN Table_2 ON Table_1.columnName compopr Table_2.columnName
columnName必須有相同的數據類型及包含相同類型的數據,但它們不需要有相同的名稱。
compopr指定的運算符有:"=", "<", ">", "<=", ">=" 或 "<>"
----------------------------------------------------------------------------------------------
這次先分享到這里,有不完整之處還請廣大網友進行補充,過段時間再分享多表聯結查詢不重復的數據
總結
以上是生活随笔為你收集整理的SQL语句值left join,right join,inner join的用法的全部內容,希望文章能夠幫你解決所遇到的問題。