文档章节

left join 和 inner join

learn_more
 learn_more
发布于 2017/06/30 18:53
字数 269
阅读 96
收藏 0

left join 和 inner join

首先 MySQL 中 inner join 的效率确实要高于 left join。所以没必要使用 left join 转弯成 inner join 的效果。这样不但效率降低,可读性也会降低。

 

Number1

select 

from t1 left join t2 

where t2.field = value 

 

Number2

select 

from t1 left join t2  and t2.field = value

 

这两种写法涉及到一个条件位置不同查询结果就不一致的问题,Number1的意思其实和使用 inner join 效果是一致的,因为他对连接的结果做了过滤;

Number2 则是先对 t2 做过滤,然后再连接,所以他的结果集要大于 Number1,换句话说Number2的条件是强加在 t2 上的,而不是整个结果集。

另外,如果把查询条件改为 t2.field  is  null ; 前者与后者的结果是一致的,都是表示存在 t1 不存在 t2,所以这个比较特殊。

总之尽量不要使用 left join,除非业务需要,否则尽量使用 inner join.

© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
Mysql left join,right join,inner join的效率比较

一.Join语法概述 join 用于多表中字段之间的联系,语法如下: table1:左表;table2:右表。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关...

mickelfeng
2017/10/25
200
0
一张图看懂SQL的各种Join用法

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。 具体分解如下: 1、INNER JOIN(内连接) SELECT FROM TableA AINNER JOIN TableB BON A.Key = B.Key 2、LEFT ......

dragon_tech
03/19
52
0
一张图看懂 SQL 的各种 join 用法

作者:C.L. Moffatt 来自:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。 ......

Python编程
04/01
0
0
left join 查询语句优化

LEFT JOIN 关键字会从左表 (tablename1) 那里返回所有的行,即使在右表 (tablename2) 中没有匹配的行。 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。 a表: a1,a2 字段 b表: b1,b...

吾爱
2013/02/22
1K
0
pandas之concat and merge

pandas 表横竖合concat,参考官方链接 竖合 保留了各自的index以及各自数据,缺失的用 NaN填充,concat函数默认参数 join='inner'相当于求交集,ignore_index=True,忽略各自的index,合并后数...

14142135623731
2018/04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引

关注我,可以获取最新知识、经典面试题以及微服务技术分享   在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本...

ccww_
22分钟前
17
0
SAP HANA数据库multi container模式JDBC链接connection refused

报错如下信息 com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxx.xxx.xxx.xxx:30015 [Cannot connect to host xxx.xxx.xxx.xxx:30015 [C......

flash胜龙
47分钟前
33
0
c++ 虚基类

c++ 虚基类 p556

天王盖地虎626
53分钟前
86
0
k8s删除Terminating状态的命名空间

背景: 我们都知道在k8s中namespace有两种常见的状态,即Active和Terminating状态,其中后者一般会比较少见,只有当对应的命名空间下还存在运行的资源,但是该命名空间被删除时才会出现所谓的...

Andy-xu
今天
81
0
seata源码阅读笔记

seata源码阅读笔记 本文没有seata的使用方法,怎么使用seata可以参考官方示例,详细的很。 本文基于v0.8.0版本,本文没贴代码。 seata中的三个重要部分: TC:事务协调器,维护全局事务和分支...

东都大狼狗
今天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部