关于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后面就是对整个联表再进行过滤,会改变联表的显示行数