SQL语句值left join,right join,inner join的用法
sql語句中兩表連結(jié)方式主要有一下3中,需要注意的時(shí)在進(jìn)行多表連結(jié)的時(shí)候必須要用 on 指定表中的某個(gè)字段作為連結(jié)的條件
 
left join(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄 -----結(jié)果集的條目數(shù)以左表為準(zhǔn)
 right join(右聯(lián)接) 返回包括右表中的所有記錄和左表中聯(lián)結(jié)字段相等的記錄------結(jié)果集的條目數(shù)以右表為準(zhǔn)
 inner join(等值連接) 只返回兩個(gè)表中聯(lián)結(jié)字段相等的行------結(jié)果集的條目數(shù)為聯(lián)結(jié)字段相等的行數(shù)
 
看一下例子
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
結(jié)果是:
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
結(jié)果是:
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
結(jié)果是:
1??????? ??? ?t1?????? ??? ?張三?????? ??? ?男??????? ??? ?1??????? ??? ?t2?????? ??? ?王五?????? ?
 2??????? ??? ?t1?????? ??? ?小白?????? ??? ?女??????? ??? ?2??????? ??? ?t2?????? ??? ?小五?????? ?
 4??????? ??? ?t1?????? ??? ?王小?????? ??? ?女??????? ??? ?4??????? ??? ?t2?????? ??? ?王五?????? ?
 5??????? ??? ?t1?????? ??? ?李白?????? ??? ?男??????? ??? ?5??????? ??? ?t2?????? ??? ?趙雪??????? 
 
----------------------------------------------------------------------------------------------
 
 
?總結(jié):left join與right join 的區(qū)別主要是在于基礎(chǔ)表是左表還是右表,對于不滿足基礎(chǔ)表聯(lián)結(jié)字段的行將會有null填充 ?? 
 
?語法:from Table_1 LEFT JOIN Table_2 ON Table_1.columnName compopr Table_2.columnName
 columnName必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的名稱。
 compopr指定的運(yùn)算符有:"=", "<", ">", "<=", ">=" 或 "<>"
 
----------------------------------------------------------------------------------------------
這次先分享到這里,有不完整之處還請廣大網(wǎng)友進(jìn)行補(bǔ)充,過段時(shí)間再分享多表聯(lián)結(jié)查詢不重復(fù)的數(shù)據(jù)
 
總結(jié)
以上是生活随笔為你收集整理的SQL语句值left join,right join,inner join的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JUC——辅助类
- 下一篇: 解决“不是有效的win32应用程序”
