Mysql之left join的用法解讀
簡述
left JOIN:把left join左邊的表的記錄全部找出來。系統(tǒng)會先用表A和表B做個笛卡兒積,然后以表A為基表,去掉笛卡兒積中表A部分為NULL的記錄。最后形成你的結(jié)果。
進(jìn)行左連接時,就有涉及到主表、輔表,這時主表?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 后面的條件對它不起作用,除非再后面再加上where來進(jìn)行篩選,這就是sql語句2了。
由sql語句3可見,on后面的條件中,右表的限制條件將會起作用。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
 如何使用Maxwell實(shí)時同步mysql數(shù)據(jù)
這篇文章主要介紹了如何使用Maxwell實(shí)時同步mysql數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-04-04
 mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
這篇文章主要介紹了mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)的方法,需要的朋友可以參考下2014-05-05
 一文教你在windows中如何同時安裝兩個不同版本的Mysql
在項(xiàng)目中可能會用到多個版本的Mysql數(shù)據(jù)庫,本文將和大家介紹一下如何在本機(jī)已安裝了一個MySQL?5.7.38的情況下,再安裝一個mysql?8.0版本吧2025-03-03

