Mysql 为什么左连接和内连接返回相同的结果

Mysql 为什么左连接和内连接返回相同的结果,mysql,Mysql,问题1 branch_id branch_name 1 Branch A 2 Branch B user_id username branch_id 1 abc 1 2 def 1 3 ghi 2 4 jkl 1 5 lmn 2 6 opq 2 问题2 query1="select a.branch_id,b.branch_id,a.branch_name from branch a L

问题1

branch_id   branch_name
1       Branch A
2       Branch B

user_id username    branch_id
1   abc     1
2   def     1
3   ghi     2
4   jkl     1
5   lmn     2
6   opq     2
问题2

query1="select a.branch_id,b.branch_id,a.branch_name from branch a LEFT JOIN user_mast b on a.branch_id=b.branch_id";

为什么左连接和内部连接结果相同。

在查询2中没有使用
右连接。
LEFT JOIN
internal JOIN
结果相同的原因是表
branch
的所有记录在表
user\u mast
上至少有一个匹配项

内部联接
左联接
之间的主要区别在于
左联接
仍然在
左侧
显示记录,即使它们在
右侧
表中没有匹配项


您没有在查询2中使用
右连接
LEFT JOIN
internal JOIN
结果相同的原因是表
branch
的所有记录在表
user\u mast
上至少有一个匹配项

内部联接
左联接
之间的主要区别在于
左联接
仍然在
左侧
显示记录,即使它们在
右侧
表中没有匹配项


看看这个,它将有助于理解连接


看看这个,它将有助于理解连接



因为左表有2条记录,右表只有2条匹配记录。因此,在这种情况下,如果使用左联接,它将获取与联接相同的结果。如果交换表,则您将知道左联接的用法。

因为您的左表有2条记录,而右表只有2条匹配记录。因此,在这种情况下,如果使用左联接,它将获取与联接相同的结果。如果交换表,则您将知道左联接的用法。

因为您有来自左表的所有分支id与右表的分支id匹配。

因为您有来自左表的所有分支id与右表的分支id匹配表

您期望有什么不同?您会问“为什么左连接和右连接的结果相同”,但您在代码中使用了左连接和内连接就像这里我是新加入连接的人,所以如果内连接和左连接的结果相似,新用户将如何决定使用哪种连接类型?您期望有什么不同?您会问“为什么左连接和右连接?”结果是一样的,但是你在代码中做左连接和内连接,就像这里我对连接是新手,所以如果内连接和左连接都是相似的结果,新用户将如何决定使用哪种连接类型谢谢你提供了这个有用的链接我发现这是一个非常直接的解释:-)但是没有人解释表b是否有多条记录,我可以吗只需使用连接获取表b中存在的分支a和分支b中的2条记录谢谢您提供此有用链接我发现这是非常直接的解释:-)但是没有人解释表b是否有多条记录显示我可以使用连接获取表b中存在的分支a和分支b中的2条记录吗如果我只想显示2条记录分支a和分支b匹配表b如果我只想显示2条记录分支a和分支b匹配表b如果我只想显示2条记录分支a和分支b匹配表b你能进一步展开你的问题吗?可能有许多可能的解决方案,
限制
,或者可能有
不同的
,具体取决于您需要什么。你能给我一个示例结果吗?比如表a是分支主控,表b是所有用户。表a有2条记录,表b有10条记录。我想我应该只显示2条记录,因为表a有2条记录,但也显示与表a值匹配的表b字段。好的,所以您需要按记录的
分支ID
对记录进行分组。例如,我使用了
MIN
aggregate函数。它返回的记录具有最小的
username
值。如果我只想显示两条记录分支a和分支b匹配表b,您可以进一步展开您的问题吗?可能有许多可能的解决方案,
限制
,或者可能有
不同的
,具体取决于您需要什么。你能给我一个示例结果吗?比如表a是分支主控,表b是所有用户。表a有2条记录,表b有10条记录。我想我应该只显示2条记录,因为表a有2条记录,但也显示与表a值匹配的表b字段。好的,所以您需要按记录的
分支ID
对记录进行分组。例如,我使用了
MIN
aggregate函数。它返回具有最小
username
值的记录。
$query2="select a.branch_id,b.branch_id,a.branch_name from branch a INNER JOIN user_mast b on a.branch_id=b.branch_id";