java中outer和inner,“ INNER JOIN”和“ OUTER JOIN”有什么区别?

还有LEFT JOIN , RIGHT JOIN和FULL JOIN配合?

#1楼

您可以使用INNER JOIN从两个匹配的表中返回所有行。 即在结果表中,所有行和列都将具有值。

在OUTER JOIN ,结果表可能具有空列。 外部连接可以是LEFT或RIGHT 。

LEFT OUTER JOIN返回第一个表中的所有行,即使第二个表中没有匹配项也是如此。

RIGHT OUTER JOIN返回第二个表中的所有行,即使第一个表中没有匹配项也是如此。

#2楼

简单来说:

内部联接仅检索匹配的行。

而外部联接从一个表中检索匹配的行,而从另一表中检索所有行..结果取决于您使用的是哪一个:

左 :右表中的匹配行以及左表中的所有行

右 :左表中匹配的行以及右表中的所有行或

完整 :所有表中的所有行。 是否有比赛无关紧要

#3楼

在其他答案中,我没有看到太多有关性能和优化器的细节。

有时最好知道只有INNER JOIN是关联的,这意味着优化器具有最多的选择。 它可以对连接顺序重新排序,以使其更快地保持相同的结果。 优化器可以使用最多的联接模式。

通常,尝试使用INNER JOIN代替其他类型的联接是一个好习惯。 (当然,如果可以考虑预期的结果集。)

关于这种奇怪的关联行为,这里有几个很好的例子和解释:

#4楼

内部联接

仅检索匹配的行,即A intersect B 。

Zkk3I.jpg

SELECT *

FROM dbo.Students S

INNER JOIN dbo.Advisors A

ON S.Advisor_ID = A.Advisor_ID

左外连接

从第一个表中选择所有记录,并在第二个表中选择与联接的键匹配的所有记录。

Z584b.jpg

SELECT *

FROM dbo.Students S

LEFT JOIN dbo.Advisors A

ON S.Advisor_ID = A.Advisor_ID

完全外部加入

从第二个表中选择所有记录,并在第一个表中选择与联接的键匹配的所有记录。

c1QF3.jpg

SELECT *

FROM dbo.Students S

FULL JOIN dbo.Advisors A

ON S.Advisor_ID = A.Advisor_ID

参考文献

#5楼

内部联接。

联接是合并两个表中的行。 内部联接会尝试根据您在查询中指定的条件来匹配两个表,并且仅返回匹配的行。 如果联接中第一个表中的一行与第二个表中的两行匹配,则结果中将返回两行。 如果第一个表中的行与第二个表中的行不匹配,则不返回该行; 同样,如果第二个表中的行与第一个表中的行不匹配,则不返回该行。

外连接。

左联接尝试查找从第一个表到第二个表中的行的匹配项。 如果找不到匹配项,它将返回第一个表中的列,并将第二个表中的列留空(空)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值