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