Mysql之left join的用法解讀
簡述
left JOIN:把left join左邊的表的記錄全部找出來。系統(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語句調(diào)用
–sql語句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語句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語句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語句1可見,left join 中左表的全部記錄將全部被查詢顯示,on 后面的條件對(duì)它不起作用,除非再后面再加上where來進(jìn)行篩選,這就是sql語句2了。
由sql語句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ān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問權(quán)限問題,所以這篇文章主要介紹了mysql中異常錯(cuò)誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03
如何使用Maxwell實(shí)時(shí)同步mysql數(shù)據(jù)
這篇文章主要介紹了如何使用Maxwell實(shí)時(shí)同步mysql數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-04-04
mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
這篇文章主要介紹了mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)的方法,需要的朋友可以參考下2014-05-05
一文教你在windows中如何同時(shí)安裝兩個(gè)不同版本的Mysql
在項(xiàng)目中可能會(huì)用到多個(gè)版本的Mysql數(shù)據(jù)庫,本文將和大家介紹一下如何在本機(jī)已安裝了一個(gè)MySQL?5.7.38的情況下,再安裝一個(gè)mysql?8.0版本吧2025-03-03

