码迷,mamicode.com
首页 > 其他好文 > 详细

连接查询的时候,on和where的区别。

时间:2014-07-10 10:58:03      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:使用   数据   re   c   测试   关系   

连接查询的时候,on和where的区别。

使用的是NorthWind数据测试。

1.内部连接。在连接的时候省略了inner。查询客户VINET的订单。

select * FROM Orders a join Customers b
on a.CustomerID=b.CustomerID AND a.CustomerID=‘VINET‘

返回记录按着VINET进行了过滤。

 

select * FROM Orders a join Customers b
on a.CustomerID=b.CustomerID
WHERE a.CustomerID=‘VINET‘

和上面的查询返回一样的结果。

也就是说on和where在内部联系的时候,没有什么区别。都会对返回记录进行过滤。


2.外部连接,左连接。同样的查询条件。

select * FROM Orders a LEFT join Customers b
on a.CustomerID=b.CustomerID AND a.CustomerID=‘VINET‘

返回了记录是左表中的全部记录,没有按着 a.CustomerID=‘VINET‘进行过滤。

select * FROM Orders a LEFT join Customers b
on a.CustomerID=b.CustomerID
WHERE a.CustomerID=‘VINET‘

返回的记录进行了过滤。

这样是因为连接查询首先生成一个临时表,然后再把这个临时表返回给用户。on条件是在生成临时表的时候使用的条件句,不论它是否为真,都返回左表的记录。

where条件是在生成临时表之后使用的,这时候和连接已经没有关系了,它返回满足条件的记录。

连接查询的时候,on和where的区别。,布布扣,bubuko.com

连接查询的时候,on和where的区别。

标签:使用   数据   re   c   测试   关系   

原文地址:http://www.cnblogs.com/363546828/p/3812299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!