left join 中 on 后面加條件 where 和 and 的區別


1、 on條件是在生成臨時表時使用的條件,它不管and中的條件是否為真,都會返回左邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左表的記錄)了,條件不為真的就全部過濾掉。

現在有表a和表b 

id name
1 a
2 b
3 c
4 d
表a

 

 

id name
1 A
2 B
表b

 

1、on 后面條件用and  ,不管條件是否成立 都會把左表的數據全部展示

select * from a left join b on a.id = b.id  and b.name = 'B';

 

 2、on 后面條件用where ,在left join 生成的表上在做篩選,這時會把 where中不成立的篩選掉

select * from a left join b on a.id = b.id  where b.`name` = 'B';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM