关于 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 的时候只会连接一条

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