0

我试图在谷歌搜索。但是每个人都在解释内连接,当谈到外连接时,他们包括完全外连接/左/右。我只想知道内部联接和外部联接之间的区别。

4

2 回答 2

0

内部联接

“从两个表中获取与连接条件匹配的所有行。”

外连接

“从 [left/right] 表中获取所有行,并加入与另一个表中的连接条件匹配的任何行。”

全外连接

“从两个表中获取所有行并将任何行连接到每个匹配连接条件的行。”

在外部连接的情况下,如果您说:

SELECT m.*, mo.*
FROM myTable m
LEFT OUTER JOIN myOtherTable mo ON m.Id = mo.myTableId

这将返回左表 (myTable) 中的所有行以及myOtherTable中的任何匹配行。myTable 中没有匹配的任何行都将 mo.* 的值设置为NULL

在内部联接的情况下,如果您说:

SELECT m.*, mo.*
FROM myTable m
INNER JOIN myOtherTable mo ON m.Id = mo.myTableId

您将只获得两个表中匹配的行,例如,如果您有一条Id 为15 的 myTable 记录,而没有myTableId为 15 的myOtherTable记录,则不会为 Id 为 15 的myTable行返回任何

还有一点要认识到,如果有多个匹配项,将返回多行。因此,如果您在 myOtherTable 中有 2 个项目myTableId10,则Id 为 10 的myTable行将被复制,其中一行与来自myOtherTable的第一条记录连接,另一行与第二条记录连接。

于 2013-08-22T15:50:32.727 回答
0

内部联接是联接所涉及的两个表中的列匹配的位置,并且仅在该条件为真时返回结果。外连接即使没有匹配也会返回结果,当连接条件不满足时会返回空值。

Sql小提琴链接

于 2013-08-22T15:44:56.880 回答