inner join on, left join on, right join on的区别与介绍
Table A?
aid?? adate?
1????? a1?
2????? a2?
3????? a3?
TableB?
bid bdate?
1??? b1?
2?? b2?
4??? b4?
兩個表a,b相連接,要取出id相同的字段?
select * from a inner join b on a.aid = b.bid這是僅取出匹配的數(shù)據(jù).?
此時的取出的是:?
1 a1 b1?
2 a2 b2?
那么left join 指:?
select * from a left join b on a.aid = b.bid?
首先取出a表中所有數(shù)據(jù),然后再加上與a,b匹配的的數(shù)據(jù)?
此時的取出的是:?
1 a1 b1?
2 a2 b2?
3 a3 空字符?
http://hovertree.com/menu/sql/
同樣的也有right join?
指的是首先取出b表中所有數(shù)據(jù),然后再加上與a,b匹配的的數(shù)據(jù)?
此時的取出的是:?
1 a1 b1?
2 a2 b2?
4 空字符 b4?
LEFT JOIN 或 LEFT OUTER JOIN。?
左向外聯(lián)接的結(jié)果集包括 LEFT OUTER 子句中指定的左表的所有行,?
而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值?
舉個例子你就能知道了!?
A表(a1,b1,c1)????? B表(a2,b2)?
a1?? b1?? c1?????? a2??? b2?
01?? 數(shù)學(xué) 95?????? 01??? 張三?
02?? 語文 90?????? 02??? 李四?
03?? 英語 80?????? 04??? 王五?
select A.*,B.* from A?
inner join B on(A.a1=B.a2)?
結(jié)果是:?
a1?? b1?? c1?????? a2??? b2?
01?? 數(shù)學(xué) 95?????? 01??? 張三?
02?? 語文 90?????? 02??? 李四?
select A.*,B.* from A?
left outer join B on(A.a1=B.a2)?
結(jié)果是:?
a1?? b1?? c1?????? a2??? b2?
01?? 數(shù)學(xué) 95?????? 01??? 張三?
02?? 語文 90?????? 02??? 李四?
03?? 英語 80?????? NULL? NULL?
select A.*,B.* from A?
right outer join B on(A.a1=B.a2)?
結(jié)果是:?
a1?? b1?? c1?????? a2??? b2?
01?? 數(shù)學(xué) 95?????? 01??? 張三?
02?? 語文 90?????? 02??? 李四?
NULL NULL NULL???? 04??? 王五?
select A.*,B.* from A?
full outer join B on(A.a1=B.a2)?
結(jié)果是:?
a1?? b1?? c1?????? a2??? b2?
01?? 數(shù)學(xué) 95?????? 01??? 張三?
02?? 語文 90?????? 02??? 李四?
03?? 英語 80?????? NULL? NULL?
NULL NULL NULL???? 04??? 王五
推薦:http://www.cnblogs.com/roucheng/p/3504463.html
轉(zhuǎn)載于:https://www.cnblogs.com/roucheng/p/sqljoin.html
總結(jié)
以上是生活随笔為你收集整理的inner join on, left join on, right join on的区别与介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冲刺第二阶段第八天
- 下一篇: Android中Messenger的使用