两张表:
A:
id name
a jim
b tom
c kate
B:
id name
a jim
c kate
表A和表B进行左连接时,如果表B存在限制where条件,在书写sql是需要注意。可理解为在表做完连接再取where条件。如下例子:
Select * from a ,b where a.id=b.id(+) and b.id=’a’
执行这句sql 后结果如下:
id name id name
a jim a jim
往给人的错觉是在b表中加入了where 限制条件左连接没有起到作用,其实不然。下面分析一下sql的执行过程:
首先a表和b表用id字段进行连接;结果如下:
id name id name
a jim a jim
b tom null null
c kate c kate
再用b.id=‘a’做限制时,由于id:b、c对应的b的id 为null 故在最终结果中被剃掉了。并非左连接没有起到作用。
下列写法:
Select * from a,b where a.id=b.id(+) and b.id(+)=’a’
可理解为先对b表进行限制,然后进行做连接
本文通过具体实例解析了SQL中左连接(left join)的使用方法,特别是当涉及到表B的where条件限制时,如何正确理解和应用left join,避免误解。
456

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



