[转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

来源:互联网 发布:淘宝原创衣服品牌 编辑:程序博客网 时间:2024/04/26 05:21

前几天在查数据中的时候用了and结果一直不对(查的数据多了)直到我把and 改成where 数据就正常了!
看到一篇帖子!特意转载,原博主未申明不可转载,若作者不愿意则删除…
源博地址:http://www.cnblogs.com/iffan/p/6602361.html


  众所周知,数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过LEFT JOIN 等语句进行相关联,并且我们也会为我们所想查询的数据进行一个筛选,这时我们就会用到过滤语句。

  LEFT JOIN ON WHERE:在临时表生成后,再对临时表的数据进行过滤,再返回左表。

  LEFT JOIN ON AND:在临时表生成的过程时,ON中的条件不管是否为真,都将返回左表。

  例如:

      表1.id  表1.value      表2.value  表2.name        1     100        100      开心       2     200        200     很开心       3       300       300      超级开心       4     400        400      无敌开心

SQL语句如下:

  [1] SELECT * FROM1 LEFT JOIN2 ON (表1.value = 表2.value) WHERE2.name = 开心  [2] SELECT * FROM1 LEFT JOIN2 ON (表1.value = 表2.value) ON2.name = 开心

当执行[1]的时候得:

      表1.id  表1.value      表2.value  表2.name         1     100        100      开心

当执行[2]的时候得:

      表1.id  表1.value      表2.value  表2.name         1     100        100      开心       2     200        NULL      NULL       3       300        NULL      NULL       4     400        NULL      NULL       
原创粉丝点击