偶作为一个初学者的时候,喜欢用select * from t1,t2 where t1.f1=t2.f2这样的方式来关联两个表,该方式如果在sql server里面可以自动变为inner join,其他数据库如oracle则不会。
现在,偶更喜欢用select * from t1 left join t2 on t1.f1=t2.f2这种方式。
两者区别:
1、查询结果,left join返回的结果可能更多。
left join,即作连接,是以左表为中心,返回左表中符合条件的所有记录以及右表中联结字段相等的记录——当右表中无相应联接记录时,返回null。
用where来表示俩表关联关系,相当于全连接,必须两表都关联的记录才能获取。
2、使用left join,结构更清晰。
特别在实际应用场景中,要关联10个以上的表都常见,各种子查询和复杂函数层层套叠,如果仅用where来表示表关联关系,where后面关联关系和各种查询条件混一起,维护性差,而且可能查询效率也会受影响。