sql server中left join左链接遇到的问题。

语句1 select a.* from a left join b on a.id=b.id 结果470条

语句2 select a.* from a left join b on a.id=b.id and a.Name='张三' 结果445条

语句3 select a.* from a left join b on a.id=b.id where a.Name='张三' 结果1条

语句4 select a.* from a left join b on a.Name='张三' 结果603条

 

语句2中查出来的数据有部分的name不等于'张三'

语句2为什么会查出不等于张三的数据?原因是什么?为什么语句4会查出来601条?它默认关联的字段又是那个呢?

holdtom
浏览 695回答 11
11回答

翻过高山走不出你

返回的数据是a表本身,为什么呢?之前的删掉干嘛,本来还想着回复你的

MMMHUHU

个人建议:表连接就是表连接,搜索条件就是搜索条件。如果都这么写,那还要where子句干嘛?搜索条件还是写在where子句里面合适,你这种写法,就算知道了出错原因,也没有什么实际价值。 就事论事,不喜勿喷  

慕桂英4014372

执行一边,看一下执行计划就知道怎么回事

阿晨1998

2和3的查询时等价的,你仔细检查你的查询结果, 4,笛卡尔乘积,你在on子句中写上 1=1 也行  

慕标5832272

23不等价,我可以确定以及肯定。内链接才会等价,我之所以贴出3是因为了说明3才是我想要的,凸显2为什么会查处来的数据不对

白衣染霜花

3是笛卡尔积后,重新使用where查询。如果使用的是join(内连接),才是相同的

青春有我

我的理解:语句2的and,只有符合才会去关联b表,不符合的只返回a表本身。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server