MYSQL学习二 关于左连接
Posted 刘大飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL学习二 关于左连接相关的知识,希望对你有一定的参考价值。
工作中有如下的SQL, 针对A.ID =‘abcdefg‘, left join B和C两个表,来查找其他信息。就算是B和C中没有任何满足条件的记录,最后结果也肯定不是空。因为A.ID =‘abcdefg‘是存在的。
SELECT ****** FROM tableA A LEFT JOIN tableB B on b.DELETED = ‘0‘ AND A.DELETED = ‘0‘ AND B.fid=A.ID LEFT JOIN tableC C ON B.XXXid=C.id AND c.DELETED = ‘0‘ WHERE A.ID =‘abcdefg‘
一开始我的写法是这样的: 把 b.DELETED = ‘0‘放在后面,这样导致结果为null, 这是因为: 如果把and b.DELETED = ‘0‘ 放在最后,是对left join后的结果做过滤,
这个时候就有可能导致结果为null。(考虑这种情况: B和C表没有能和A连接成功的记录,如果用上面的SQL,会出结果,用这个SQL,就会null)
SELECT ****** FROM tableA A LEFT JOIN tableB B on AND A.DELETED = ‘0‘ AND B.fid=A.ID LEFT JOIN tableC C ON B.XXXid=C.id AND c.DELETED = ‘0‘ WHERE A.ID =‘abcdefg‘ and b.DELETED = ‘0‘
上面这个问题是工作中遇到的,一不小心浪费了好多时间来fix, SQL掌握的不好!
以上是关于MYSQL学习二 关于左连接的主要内容,如果未能解决你的问题,请参考以下文章