今天工作中遇到一个左外连接的问题,由于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筛选的是右表的满足条件的数据。
本文通过一个具体的案例,深入解析了SQL中左外连接的工作原理,特别是如何正确使用ON子句来实现有效的数据过滤。
471

被折叠的 条评论
为什么被折叠?



