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

连接查询中and和where的区别

时间:2016-07-07 19:23:08      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

一、区别


1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

二、例

  1. produc表 
    技术分享

  2. produc_details

    技术分享

问题是下面两个查询结果有什么不同

1.SELECT * FROM product LEFT JOIN product_details
     ON (product.id = product_details.id)
     AND   product_details.id=2;
     
2.SELECT * FROM product LEFT JOIN product_details
     ON (product.id = product_details.id)
     WHERE product_details.id=2;

结果是
1.第一条查询结果为
技术分享
2第二条查询结果为
技术分享

分析

第一条查询使用 ON 条件决定了从 LEFT JOIN的 product_details表中检索符合的所有数据行。
第二条查询做了简单的LEFT JOIN,然后使用 WHERE 子句从 LEFT JOIN的数据中过滤掉不符合条件的数据行。

连接查询中and和where的区别

标签:

原文地址:http://www.cnblogs.com/geekdc/p/5650756.html

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