left/right join 后加and条件和where条件区别在哪?

首先

  • left/right join后面接的where是限制整个查询结果
  • left/right   a(左表)  join  b(右表) on a.uid=b.uid限制的是从表的查询结果(左外连接的从表是b,右外连接的从表是a),不影响主表的查询结果。
  • 例如:
  • select * from LeftTbale l left join RightTable r    on l.uid=r.uid and l.uname like '%峰%'              l.uname这边限制的条件无效等于后面l.uname like '%峰%' 写
  • select * from LeftTbale l left join RightTable r    on l.uid=r.uid and r.dname like '%开发%'     r.dname like '%开发%' 限制条件有效,查询出r.dname中含有开发的记录
  • select * from LeftTbale l left join RightTable r    on l.uid=r.uid where l.uname like '%峰%'          l.uname like '%峰%' 限制条件有效

 

后面补充简洁说明:

例如( left join...on..中on后面是作用生成临时表的限制条件,无论and中是否成立都会返回左表的全部记录,只对右表的条件会起限制作用)=》(临时表),where是在on条件限制后出现的临时表再做筛选过滤

posted @ 2020-10-23 09:17  唐尼_wang  阅读(449)  评论(0编辑  收藏  举报