關於 left join的 左連接取右邊數據的問題整理

廢話少說  直接上乾貨

A表
ID Name Age Sex
1 約翰 12
2 王鋼蛋 13

 

B表
ID Chinese English Name Day
1 90 100 約翰 1
2 80 105 約翰 4
3 98 120 王鋼蛋 2
4 99 110 王鋼蛋 3

 

 

select A.Name,A.Age,A.Sex,B.Chinese,B.English from A left join B on A.ID=B.ID where B.Day='1' ;     

結果:約翰  12  女 90 100  

select A.Name,A.Age,A.Sex,B.Chinese,B.English from A left join B on A.ID=B.ID and B.Day='1' ;     

結果:約翰  12  女 90 100  

          王鋼蛋  null  null  null 

 

總結:

連接時用and會造成右邊數據爲空   where會查詢整體條件的數據  不會出現右表爲空的情況

查詢時保證右表有數據並且只查詢一條(多條的情況  只取一條)

select A.Name,B.Chinese,B.English from A left join (SELECT MAX(English)AS English,Name FROM B GROUP BY Name ) B on A.Name = B.Name;

這句話的重點在於紅色部分  是將要查詢的右表的值先分組取出來 並且只取了一個  使外部left join 的時候只會連接一條

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章