谁能解释这个左联接输出?我是新来的

问题描述

我有2个表,只有一列。

p1 (id - 1,1,null)
p2(id - 1,null,null)

当我在做左联接时

(select * from p1 left join p2 on p1.id = p2.id) 

我得到5行

(1,1.null) 

我原本希望获得4行。 请解释原因。

解决方法

原因是ID = 1的4行,即P1中的每个ID = 1将与P2中的两行连接在一起,其值为1,并且同样明智的是P1中的秒1将再次与P2中的2行连接。

第5行代表Null。

,

SQL左联接基本上是一个联接,它将使左表上的索引与右表加上左表的所有不匹配记录相匹配。 现在,当您没有重复的行时,左联接非常简单

SQL Table with no duplicate values

从图像中可以看出,左右表中分别有5条记录,其中3条匹配。因此,SQL左联接将返回所有匹配的记录一次以及所有不匹配的记录,我们的最终答案将是

罗纳尔多,梅西,齐达内,特里和波格巴

现在,如果像您的情况那样在正确的表中有重复的记录,该怎么办

SQL table with duplicate records

现在,由于梅西和齐达内各有2条记录,因此左联接将返回梅西和齐达内的两条记录,因此最终输出将为

罗纳尔多,梅西,梅西,齐达内,齐达内,特里和波格巴

希望,我能帮助您澄清疑问