关于left join的几点思考和总结

it2022-05-05  308

关于left join的几点思考和总结

select * from t1 left join t2 on t1.id = t2.tid and t2.num = 100 where 1=1 and t1.name = 'xxxx'

on t1.id = t2.tid是表的连接条件

left join会显示所有t1的数据行,t2数据为没有的就显示null

如果一个t1.id 对应多个t2.tid,那么联表中的t1部分会有重复的数据

on后面的条件是联合查询条件,on后的and作用域也属于on

这里是left join,所以 t2.num = 100 让联表中 t1全部查出来,t2部分只显示num =100 的那部分数据,其他行数据为null。

如果是inner join,满足on后面的条件,联表的整行数据才会显示出来,所以也可以把条件放到where后面。

where 1=1 不能去掉,否则会认为是联合查询时的条件,where后面就是对整个联表再进行过滤,会改变联表的显示行数


最新回复(0)