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

Wesley13
• 阅读 371

数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过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

点赞
收藏
评论区
推荐文章
SQL抽象语法树及改写场景应用
1背景我们平时会写各种各样或简单或复杂的sql语句,提交后就会得到我们想要的结果集。比如sql语句,”selectfromt\_userwhereuser\_id10;”,意在从表t\_user中筛选出user\_id大
kenx kenx
2年前
mybatis的mapper特殊字符转移以及动态SQL条件查询
前言我们知道在项目开发中之前使用数据库查询,都是基于jdbc,进行连接查询,然后是高级一点jdbcTemplate进行查询,但是我们发现还是不是很方便,有大量重复sql语句,与代码偶合,效率低下,于是就衍生出来ORM框架,如Mybatis,Hibernate,还有SpringBoot的,SpringDataJPA条件查询我们知道在mybatisma
Easter79 Easter79
2年前
sql join
1.1.1摘要Join是关系型数据库系统的重要操作之一,SQLServer中包含的常用Join:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join具体联接表或函数进行查询的特性本文将通过具体例子介绍SQL中的各种常用Join的特性和使
Easter79 Easter79
2年前
sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)
我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统的,这时我们就需要查询他们的一些设置和内容,下面讲的就是如何查询它们的相关信息。1、(1)获取数据库服务器CPU核数等信息(只适用于SQL2005以及以上版本数据库)/\\\\\\
Stella981 Stella981
2年前
Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。1在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insertintot\_student(id,name,age,class)value("&B2&",'"&C2&"',"&D2&"
Stella981 Stella981
2年前
EF core的原生SQL查询以及用EF core进行分页查询遇到的问题
在用.netcore进行数据库访问,需要处理一些比较复杂的查询,就不得不用原生的SQL查询了,然而EFCore和EF6的原生sql查询存在很大的差异。在EF6中我们用SqlQuery和ExecuteSqlCommand进行sql语句的执行,而在EFCore中我们则使用FromSql和ExecuteSqlCommand一.ExecuteS
Stella981 Stella981
2年前
EntityFramework之原始查询及性能优化(六)
前言在EF中我们可以通过Linq来操作实体类,但是有些时候我们必须通过原始sql语句或者存储过程来进行查询数据库,所以我们可以通过EFCodeFirst来实现,但是SQL语句和存储过程无法进行映射,于是我们只能手动通过上下文中的SqlQuery和ExecuteSqlCommand来完成。SqlQuerysql语句查询实
Wesley13 Wesley13
2年前
JOIN关联表中ON,WHERE后面跟条件的区别
SQL中on条件与where条件的区别      数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。     在使用leftjion时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是
Wesley13 Wesley13
2年前
mysql 数据操作 多表查询 准备
为什么需要多表查询:因为我们不可能把所有数据都放在一张表里我们把不同数据存储放在一张一张不同表方便管理,但我们为了方便管理,把数据拆分到一张一张表去存储。但是数据还是一个整体,数据之间是有关联关系,那就要把分散的数据,合并到一起进行查询多表查询概念:连表操作通过连接方式,把有关系的表拼成一个整体,进行关联查询。
京东云开发者 京东云开发者
7个月前
Vitess全局唯一ID生成的实现方案 | 京东云技术团队
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn