此外,如何适应左外加入,右外加入和全外加入?


当前回答

1.内部加入:也称为加入. 它返回在左表中的两行,右表只有如果有比赛。

例子:

SELECT
  e1.emp_name,
  e2.emp_salary    
FROM emp1 e1
INNER JOIN emp2 e2
  ON e1.emp_id = e2.emp_id

此分類上一篇

2.Full Outer 加入: 也称为Full 加入. 它返回所有的行在左表和右表。

例子:

SELECT
  e1.emp_name,
  e2.emp_salary    
FROM emp1 e1
FULL OUTER JOIN emp2 e2
  ON e1.emp_id = e2.emp_id

此分類上一篇

3.Left Outer 加入: 或者简单地称为Left 加入. 它返回左表中的所有行,并从右表中匹配行(如有)。

右外加入:也称为右加入. 返回相匹配的行从桌面左(如果有),并所有行在桌面右。

此分類上一篇

加入的好处

更快的执行

其他回答

简单的说法:

一个内部合并只接收相匹配的行列。

虽然一个外部加入从一个表中获取相匹配的行,而在另一个表中的所有行......结果取决于你使用哪个行:

左: 右桌上的匹配行和左桌上的所有行 右: 左桌上的匹配行和右桌上的所有行 或 完整: 所有桌上的所有行。

一个内部合并只显示行,如果在合并的另一边(右)有一个匹配记录。

一(左)外部连接显示在左侧的每个记录的行列,即使连接的另一(右)侧没有匹配行列,如果没有匹配行列,对另一(右)侧的列将显示零。

这里有很多很好的答案,非常准确的相对 algebra 例子. 这里是一个非常简单的答案,这可能有助于爱好者或初学者编码器与 SQL 编码 dilemmas。

基本上,更常见的是,JOIN询问会分为两个案例:

对于一个数据组的选项:

使用 INNER JOIN 当您正在寻找的相关 B 数据必须根据数据库设计存在;使用 LEFT JOIN 当您正在寻找的相关 B 数据 MIGHT 或 MIGHT NOT 根据数据库设计存在。

左 加入 在 返回 内部加入 在 联盟 行 所有 未匹配 左 表 行 延伸 以 零 。

右 加入 返回 内 加入 在 联盟 行 所有 未匹配 右 表 行 延伸 零。

外部是可选的,没有效果。

(SQL Standard 2006 SQL/Foundation 7.7 Syntax Rules 1, 一般规则 1b, 3c&d, 5b)

所以不要在外部加入,直到你知道什么基础内加入涉及。


在返回中查找内部加入的行列:CROSS JOIN vs INNER JOIN 在 SQL 中

这也解释了为什么Venn(类似)图表不对内部与外部合并有用。 更多关于为什么它们不对合并有用:Venn 图表为自然合并

内部加入。

一个加入是结合两个表的行列,一个内部加入试图根据您在查询中指定的标准匹配两个表,并只返回相匹配的行列,如果加入中的第一个表中的行列匹配第二个表中的两个行列,那么两个行列将返回结果。

外面加入

左派加入试图从第一张桌子到第二张桌子中的列相匹配,如果它无法找到一场比赛,它将从第一张桌子返回列,并将第二张桌子中的列空白(零)。