首页新闻找找看学习计划

求助,各位能解释下原因吗?为什么第一条SQL后面那个条件不起作用?第二条起作用了

0
悬赏园豆:10 [已解决问题] 解决于 2015-08-04 18:33
SELECT a.* FROM auctioncommendity a
LEFT JOIN auctionbid b
ON a.id=b.auctioncommendityid AND a.id='000000004ef2f390014ef3024f230015';

SELECT a.* FROM auctioncommendity a
INNER JOIN auctionbid b
ON a.id=b.auctioncommendityid AND a.id='000000004ef2f390014ef3024f230015';
menz_i的主页 menz_i | 初学一级 | 园豆:187
提问于:2015-08-04 10:25
< >
分享
最佳答案
2

就这样放出来怎么看

收获园豆:10
MrNice | 老鸟四级 |园豆:3008 | 2015-08-04 10:32

汗。。。第一次提问,理解理解

menz_i | 园豆:187 (初学一级) | 2015-08-04 10:37

@menz_i: 你应该这么办

SELECT a.* FROM auctioncommendity a 
LEFT JOIN auctionbid b 
ON a.id=b.auctioncommendityid WHERE a.id='000000004ef2f390014ef3024f230015';

对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需要把条件放到where后面

对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。

MrNice | 园豆:3008 (老鸟四级) | 2015-08-04 10:57

@MrNice: 原来是这样,太谢谢了

menz_i | 园豆:187 (初学一级) | 2015-08-04 11:02
其他回答(4)
0

怎么可以没有作用了,你需要看你的左连接与内连接的结果是什么呀,再看AND给你过滤了什么

稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-04 10:30

内连接没有一条记录,左连接有几条记录,而且a.id为其他的记录也全都显示出来了,也就是说这个and条件没有过滤一条记录

支持(0) 反对(0) menz_i | 园豆:187 (初学一级) | 2015-08-04 10:36
0

建议楼主先去了解SQL left join、inner Join、right Join 的区别,

http://www.cnblogs.com/pcjim/articles/799302.html

 

如果你把AND 条件放在WHERE 后面,你就会发现和内链接是一样的结果

了解了上面的区别,你就能看出比较了

嗷大喵学编程 | 园豆:165 (初学一级) | 2015-08-04 10:56

谢谢

支持(0) 反对(0) menz_i | 园豆:187 (初学一级) | 2015-08-04 11:05
0

 你这种查询可以直接用等值查询的

✎﹏ℳ๓₯㎕ღ | 园豆:1497 (小虾三级) | 2015-08-04 11:07

谢谢

支持(0) 反对(0) menz_i | 园豆:187 (初学一级) | 2015-08-04 12:57
0

在第一条语句中,你的and是作为左连接的条件的,这个时候,无论是否匹配,左表都会查出来。根本所在,还是仔细了解下几种连接的差异。。

幻天芒 | 园豆:36522 (高人七级) | 2015-08-04 12:05

谢谢

支持(0) 反对(0) menz_i | 园豆:187 (初学一级) | 2015-08-04 12:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册