我试图在谷歌搜索。但是每个人都在解释内部连接,当涉及到外部连接时,它们包括完全外部连接/左/右。我只想知道内连接和外连接之间的区别。
答案 0 :(得分:0)
内连接是列在连接中涉及的两个表中匹配的位置,并且仅返回该条件为真的结果。即使没有匹配,外连接也将返回结果,并且在不满足连接条件时将返回空值。
答案 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 的第一条记录,以及第二条记录的记录。