Mysql内连接、左连接、右连接区别-理解记忆
- 背景说明唠叨一下
- 说个前置
- 第一点、说一下内连接
- 第一种:左表ID没有可以与右表匹配的ID
- 第二种:左表ID向右表匹配,没有匹配到右边跟左边相同的ID
- 第三种:左表ID匹配到右表一个ID
- 第四种:左表ID匹配到右表多个ID
背景说明唠叨一下
马上又要离职了,最近看MySQL的内连接这点,平常我们公司根本没用,一年了来来回回都没搞懂如题的问题,就知道什么左连接是左表为准,查到显示,查不到不显示,干,听多了应该说看多了感觉都是废话,听不懂了,具体是啥意思也没整会。有点绕,今专门摸会鱼记一下,正题:
说个前置
给两个表,我这里模拟左表和右表,A就是左表,B就是右表
第一点、说一下内连接
我这里理解为:会显示有关联的数据,没有关联就不显示(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表是老大,我都不显示,小弟当然也不显示
以下情况不可能显示:
第二种:左表ID向右表匹配,没有匹配到右边跟左边相同的ID
左表有一个id7 右表没有id7
如上图的“id7”一样,左表有,但右表没有。显示如下(这里跟内连接逻辑不同)
换句话讲:我A表为准,我A表是老大,我显示,小弟当然就算没有也得配合我-显示空也得显示
以下情况正常显示
第三种:左表ID匹配到右表一个ID
左表有一个id2 右表有一个id2
左表和右表的数据都显示,显示一条数据。
就像id2一样,正常显示:
第四种:左表ID匹配到右表多个ID
(这里都是一样的谁的ID多,都是另外的配合补充上去)
左表有一个id1 右表有多个id1
大概就这样,右链接就是反过来而已,思考以下就行了,主要区别在第二点;如果能看懂帮助到你实属万幸,帮不到,就当我废话吧。记录