今天工作中遇到一个左外连接的问题,由于sql学的不好所以想了半天才明白自己错在哪里,sql(进行了简化)如下:
select a.*
from tableA a
left join tableB b
on b.b_id = a.a_id
left join tableC c
on c.c_id = a.a_id
and a.a_id = 'xxxx';
问题:将id传入之后得到的数据是全部的数据,并没有根据id进行过滤??
本人思路:既然有and条件为何还会查出全部的数据??一直在想
解决:看到了如下的代码
select a.*
from tableA a
left join tableB b
on b.b_id = a.a_id
left join tableC c
on (c.c_id = a.a_id and a.a_id = 'xxxx');
瞬间明白了原因!!!!!
总结:左外连接显示左表的全部内容,on筛选的是右表的满足条件的数据。