内部和外部联接sql server之间有什么区别

时间:2013-08-22 15:36:01

标签: sql tsql join inner-join outer-join

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

2 个答案:

答案 0 :(得分:0)

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

Sql fiddle link

答案 1 :(得分:0)

内部加入

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

外部加入

“从[左/右]表中获取所有行,并连接与其他表中的连接条件匹配的所有行。”

完全外部加入

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

如果您说:

,则在外部联接的情况下
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为 myTable 记录,而 myOtherTable 记录 myTableId 为15,那么 myTable 行将返回ID为15的行。

还有另一点要认识到,如果有多个匹配项,则会返回多行。因此,如果您在 myOtherTable 中有2个项目且 myTableId 为10,则ID为10的 myTable 行将被复制,其中一行包含加入 myOtherTable 的第一条记录,以及第二条记录的记录。