使用mybatis操作数据库,如果出现异常,修改后需要重启服务器。而将sql语句直接存在数据库中,先从数据库中读取然后再执行,就算修改sql语句,只需清缓存,不用重启服务器。考虑到这点。一次项目中,将sql语句直接存在数据库中,通过各种表和字段的拼接,得到最终的sql语句
pick up:
select * from t1 left join t2 on t1.id=1;
此时t1表id值为2的数据也会显示出来。但t2表的数据都为null。如果需要t1表只显示id为1的数据
可以在on后面继续跟where语句
如:select * from t1 left join t2 on t1.id=1 where t1.id = 1;
这样t1表中id为2的数据不会显示。
或者使用 inner join
如:select * from t1 inner join t2 on t1.id=1;
总结:left join 会将主表的所有数据查出来,子表后面的on不能将主表的过滤,除非再后面添加where语句
inner join 子表后跟的on能够过滤主表