廢話少說 直接上乾貨
ID | Name | Age | Sex |
1 | 約翰 | 12 | 女 |
2 | 王鋼蛋 | 13 | 男 |
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 的時候只會連接一條