在join中,on和where的区别】的更多相关文章

left join : 左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join : 右连接,返回右表中所有的记录以及左表中连接字段相等的记录. inner join : 内连接,又叫等值连接,只返回两个表中连接字段相等的行. full join : 外连接,返回两个表中的行:left join + right join. cross join : 结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数. 关键字 on 数据库在通过连接两张或多张表来返回记录时,都会生成一张…
举例进行说明,我们现在有两个表,即商品表(products)与sales_detail(销售记录表).我们主要是通过这两个表来对MySQL关联left join 条件on与where 条件的不同之处进行讲述. 1.数据准备 创建products表并插入数据 drop table if exists products; CREATE TABLE `products` ( `pid` INT (3) NOT NULL auto_increment, `pname` VARCHAR (20) NOT…
-- from http://blog.itpub.net/30175262/viewspace-1472060/ 今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来,即: 日期 交易次数 交易金额 2009-4-01 1 10 2009-4-02 2 20 2009-4-03 0 0 2009-4-04 5 50 .... 一开始我用的左连接,用on做为两表关联条件,用where作为过滤条件,但是发现0的数据根本不显示,后来把where关键字去掉,把过滤条件都放到on里,问…
关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行,即使on中包含有A表中的列的限制条件,也不会过滤A的任何数据(A的数据只会通过where过滤). 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据 在匹配阶段 WHERE 子句的条件都不会被使用.仅在匹配阶段完成以后,WHERE 子句条件才会被使用.它将从匹配阶段产生的数据中检索过…
关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行. 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据 在匹配阶段 WHERE 子句的条件都不会被使用.仅在匹配阶段完成以后,WHERE 子句条件才会被使用.它将从匹配阶段产生的数据中检索过滤. ON 条件决定了从 LEFT JOIN的 product_details表中检索符合的所有…
sql语句中left join和inner join中的on与where的区别分析   关于SQL SERVER的表联接查询INNER JOIN .LEFT JOIN和RIGHT JOIN,经常会用到ON和WHERE的条件查询,以前用的时候有时是凭感觉的,总是没有搞清楚,今日亲自测试了下,理解到了一些内容,在此分享. 要测试,首先我们来创建三张表,数据库就根据自己的情况而定 创建表TestJoinOnOrWhere_A.TestJoinOnOrWhere_B.TestJoinOnOrWhere_…
table a(id, type): id     type ---------------------------------- 1      1 2      1 3      2 table b(id, class): id    class --------------------------------- 1      1 2      2 sql语句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;…
需要知道sql中关键字的执行顺序. FROM-> ON->JOIN-> WHERE->GROUP BY-> HAVING->SELECT-> DISTINCT->ORDER BY->LIMIT on在join前边.join在where前边.知道这两点,那就好说了. 注意join中的on是对关联表起作用,不是对主表. 如果想过滤主表中的数据,要用where. 具体案例可以参照:http://xianglp.iteye.com/blog/868957…
left join中关于where和on条件的几个知识点: 1.多表left join是会生成一张临时表,并返回给用户 2.where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录,是真正的不符合就过滤掉. 3.on条件是对left join的右表进行条件过滤,但依然返回左表的所有行,右表中没有的补为NULL 4.on条件中如果有对左表的限制条件,无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值.也就是说on中左表的限制条件只影响右表的匹配内容,不影响返回行数…
left join中关于where和on条件的几个知识点: .多表left join是会生成一张临时表,并返回给用户 .where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录,是真正的不符合就过滤掉. .on条件是对left join的右表进行条件过滤,但依然返回左表的所有行,右表中没有的补为NULL .on条件中如果有对左表的限制条件,无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值.也就是说on中左表的限制条件只影响右表的匹配内容,不影响返回行数. 结论…