左外连接和左连接一样吗? [复制]

Posted

技术标签:

【中文标题】左外连接和左连接一样吗? [复制]【英文标题】:Is a left outer join the same thing as a left join? [duplicate] 【发布时间】:2012-04-11 00:19:26 【问题描述】:

可能重复:Left join and Left outer join in SQL Server

根据我的研究,以下陈述是正确的

A) Join is the same as inner join.
B) Left outer join is the same as left join
C) Right outer join is the same as right join
D) There is no such thing as left inner join and right inner join

【问题讨论】:

首先,我认为你应该放一个homework标签。 【参考方案1】:

关键字 OUTER 是可选的,但我认为它应该是强制性的。在此之前(当然之后也是),我的建议是始终编写它,以提醒自己这是一个外部连接。

关键字 LEFT、RIGHT 或 FULL 是强制性的。左、右和全外连接是唯一的外连接类型。当然,关键字 JOIN 是强制性的。

您提到了 INNER JOIN。这与 FULL [OUTER] JOIN 不同。 INNER 表示所有结果行都是通过匹配两个表之间的某些条件生成的行。外连接的结果行有时不匹配,但来自一个表或另一个表或两者的行在没有匹配的情况下返回。

除了内部和外部之外,还有另一种连接类型,那就是 CROSS JOIN,但这是另一回事。

【讨论】:

为什么你认为OUTER 应该是强制性的?正如您自己在答案中所说,没有办法将LEFT JOININNER JOIN 混淆。 “这应该是强制性的……写下来,提醒自己这是一个外连接”——我觉得这不是一个强有力的论点。强迫用户以手写方式写出东西,作为对使用明确设计用于生成空值的非关系功能的惩罚,怎么样?我会投票赞成 :) 但是知道一旦某些东西进入 SQL 标准,它就永远不会被删除。例如,委员会可能认为光标中的SELECT * 已被“弃用”,但他们永远无法将其从标准中删除。 “除了内部和外部之外,还有另一种类型的联接”——不要忘记联合联接。

以上是关于左外连接和左连接一样吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

左连接和左外连接有啥区别? [复制]

LINQ to SQL 执行联合和左外连接

左外连接右外连接内连接全连接的概念

添加 2 表条件时,Oracle 左外连接停止返回结果

如何在 Linq 中执行左外连接? [复制]

带条件sql的左外连接