Mysql内连接、左连接、右连接区别-理解记忆

  • 背景说明唠叨一下
  • 说个前置
  • 第一点、说一下内连接
  • 第一种:左表ID没有可以与右表匹配的ID
  • 第二种:左表ID向右表匹配,没有匹配到右边跟左边相同的ID
  • 第三种:左表ID匹配到右表一个ID
  • 第四种:左表ID匹配到右表多个ID


背景说明唠叨一下

马上又要离职了,最近看MySQL的内连接这点,平常我们公司根本没用,一年了来来回回都没搞懂如题的问题,就知道什么左连接是左表为准,查到显示,查不到不显示,干,听多了应该说看多了感觉都是废话,听不懂了,具体是啥意思也没整会。有点绕,今专门摸会鱼记一下,正题:

说个前置

给两个表,我这里模拟左表和右表,A就是左表,B就是右表

MySQL 左关联 最大值记录 mysql左右关联查询区别_数据

第一点、说一下内连接

我这里理解为:会显示有关联的数据,没有关联就不显示(ID查不到的就不显示)
例:

select * from A inner join B on A.AID=B.BID

然后步入正题,左连接到底是什么意思?执行后会产生什么情况?
语句是这样

select * from A left join B on A.AID=B.BID

这里有几种情况

第一种:左表ID没有可以与右表匹配的ID

左表没有id6 右表有一个id6

如上图,就像图2的“id6”一样,左表根本就没有。更不要说匹配了(这里跟内连接逻辑一致)

换句话讲:我A表为准,我A表是老大,我都不显示,小弟当然也不显示

以下情况不可能显示:

MySQL 左关联 最大值记录 mysql左右关联查询区别_测试工程师_02

第二种:左表ID向右表匹配,没有匹配到右边跟左边相同的ID

左表有一个id7 右表没有id7

如上图的“id7”一样,左表有,但右表没有。显示如下(这里跟内连接逻辑不同)

换句话讲:我A表为准,我A表是老大,我显示,小弟当然就算没有也得配合我-显示空也得显示

以下情况正常显示

MySQL 左关联 最大值记录 mysql左右关联查询区别_mysql_03

第三种:左表ID匹配到右表一个ID

左表有一个id2 右表有一个id2
左表和右表的数据都显示,显示一条数据。
就像id2一样,正常显示:

MySQL 左关联 最大值记录 mysql左右关联查询区别_数据_04

第四种:左表ID匹配到右表多个ID

(这里都是一样的谁的ID多,都是另外的配合补充上去)

左表有一个id1 右表有多个id1

MySQL 左关联 最大值记录 mysql左右关联查询区别_数据_05


大概就这样,右链接就是反过来而已,思考以下就行了,主要区别在第二点;如果能看懂帮助到你实属万幸,帮不到,就当我废话吧。记录