浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别相关的知识,希望对你有一定的参考价值。

  今天的工作学习之路是一个数据库的小知识,当时没有区分出所以然,特此记录分享一下子。

  众所周知,数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过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 * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) WHERE 表2.name = 开心

  [2] SELECT * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) ON 表2.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

同理,RIGHT JOIN和FULL JOIN都具备这个特性,注意,INNER JOIN不具备这个特性。

  今天就这么愉快的结束吧!

  我的心愿是,改变世界!

以上是关于浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中left join和inner join中的on与where的区别分析

SQL语句中 LEFT JOIN 后 ON 和 WHERE 的区别

SQL语句中 LEFT JOIN 后 ON 和 WHERE 的区别

SQL语句中 left join 后用 on 还是 where,区别大了!

京东面试官:SQL 语句中 left join 后用 on 还是 where,区别大了!

SQL语句多表left join SUM出现的重复数据问题!