连接查询的时候,on和where的区别。
2014-06-27 16:49
239 查看
连接查询的时候,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条件是在生成临时表之后使用的,这时候和连接已经没有关系了,它返回满足条件的记录。
使用的是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后面的区别
- Sql_连接查询中on筛选与where筛选的区别
- sql连接查询中on筛选与where筛选的区别 推荐
- sql连接查询中on筛选与where筛选的区别
- 连接查询中on and和on where的区别
- 数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别
- sql连接查询语句中on、where筛选的区别总结
- sql连接查询中on筛选与where筛选的区别
- sql连接查询中on筛选与where筛选的区别
- sql连接查询中on筛选与where筛选的区别
- SQL左右连接中的on and和on where的区别
- Tsql查询执行顺序(二)[揭露join中on和where的区别]
- SQL左右连接中的on and和on where的区别
- SQL 查询条件放在LEFT OUTER JOIN 的ON语句后与放在WHERE中的区别
- 联接查询时where和on条件的区别一例
- MYSQL联表查询LEFT JOIN 中 WHERE条件放在ON条件里和外部的区别
- sql 左右连接 on 之后的and 和where的区别
- Ruby on Rails 查询数据库 where 和 find 的区别
- sql 左连接(left join),右链接(right join) 条件放在on和放在where 的区别
- left join on和where 限制查询的区别在于