Mysql之left join的用法解讀
簡(jiǎn)述
left JOIN
:把left join
左邊的表的記錄全部找出來(lái)。系統(tǒng)會(huì)先用表A
和表B
做個(gè)笛卡兒積,然后以表A
為基表,去掉笛卡兒積中表A
部分為NULL
的記錄。最后形成你的結(jié)果。
進(jìn)行左連接時(shí),就有涉及到主表、輔表,這時(shí)主表?xiàng)l件寫在WHERE之
后,輔表?xiàng)l件寫在ON
后面。
實(shí)例
1、表a結(jié)構(gòu)和數(shù)據(jù)
table a(id, type): id type ---------------------------------- 1 1 2 1 3 2
2、表b
結(jié)構(gòu)和數(shù)據(jù)
table b(id, class): id class --------------------------------- 1 1 2 2
SQL語(yǔ)句調(diào)用
–sql
語(yǔ)句1
:
select a.*, b.* from a left join b on a.id = b.id and a.type = 1;
執(zhí)行結(jié)果為:
a.id a.type b.id b.class --------------------------------------- 1 1 1 1 2 1 2 2 3 2
–sql
語(yǔ)句2
:
select a.*, b.* from a left join b on a.id = b.id where a.type = 1;
執(zhí)行結(jié)果為:
a.id a.type b.id b.class ---------------------------------------- 1 1 1 1 2 1 2 2
–sql
語(yǔ)句3
:
select a.*, b.* from a left join b on a.id = b.id and b.class = 1;
執(zhí)行結(jié)果為:
a.id a.type b.id b.class ---------------------------------------- 1 1 1 1 2 1 3 2
總結(jié)
sql
語(yǔ)句1
可見,left join
中左表的全部記錄將全部被查詢顯示,on
后面的條件對(duì)它不起作用,除非再后面再加上where
來(lái)進(jìn)行篩選,這就是sql
語(yǔ)句2
了。
由sql
語(yǔ)句3
可見,on
后面的條件中,右表的限制條件將會(huì)起作用。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql中異常錯(cuò)誤ERROR:2002的解決方法
最近在啟動(dòng)mysql的時(shí)候發(fā)現(xiàn)mysql報(bào)錯(cuò)了,錯(cuò)誤代碼是2002,通過(guò)查找相關(guān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問(wèn)權(quán)限問(wèn)題,所以這篇文章主要介紹了mysql中異常錯(cuò)誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03如何使用Maxwell實(shí)時(shí)同步mysql數(shù)據(jù)
這篇文章主要介紹了如何使用Maxwell實(shí)時(shí)同步mysql數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-04-04MySQL中?LBCC?和?MVCC?的理解及常見問(wèn)題示例
這篇文章主要介紹了MySQL中LBCC和MVCC的理解及常見問(wèn)題示例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2022-09-09mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
這篇文章主要介紹了mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)的方法,需要的朋友可以參考下2014-05-05一文教你在windows中如何同時(shí)安裝兩個(gè)不同版本的Mysql
在項(xiàng)目中可能會(huì)用到多個(gè)版本的Mysql數(shù)據(jù)庫(kù),本文將和大家介紹一下如何在本機(jī)已安裝了一個(gè)MySQL?5.7.38的情況下,再安裝一個(gè)mysql?8.0版本吧2025-03-03