-12

在 SQL Server 中,Left 和 OUTER JOIN 有什么区别?

4

2 回答 2

6

我本着欢迎新用户访问该网站的精神来回答这个问题。

OUTER APPLY可以实现任何LEFT JOIN可以做的事情——甚至更多。

JOIN是关系数据库中的原始操作。它是如何教授 SQL 并帮助学习以集合的方式思考的—— JOINs 通常与两个集合的笛卡尔积的某个子集相关。

APPLY实现技术上所谓的“横向连接”。我将这些视为相关子查询的变体。本质上,这些是可以返回多于一列和多于一行的相关子查询。

我对关系数据库的理解牢牢扎根于JOIN. 在教授 SQL 时,我会这样解释表之间的关系。

也许有一天,APPLY(或LATERAL在其他数据库中使用的)将成为教授 SQL 的默认方法。但是,我不认为这APPLY有助于人们理解基于集合的思维,所以我更喜欢JOIN先学习和使用,然后APPLY在其他许多有用的情况下使用。

于 2018-08-23T12:23:00.320 回答
1

首先,我真的不知道哪个是 T-SQL 中的默认 OUTER JOIN(我敢打赌 FULL),但无论如何,我认为还不清楚 - 最好在何时显式使用 LEFT、RIGHT 或 FULL JOIN您必须有一个。

JOIN 连接表。已经存在的查询或子查询。

APPLY 在(左)表的每一行中应用(duh)一个表值函数等效项。一些有趣的案例是:

  1. 应用现有的实际功能:CROSS/OUTER APPLY dbo.your_function_name
  2. 您可以使用不带 FROM 的 SELECT(某些字段)来为字段创建别名 - 这使您的代码看起来很整洁
  3. 您可以使用带有 FROM 的 SELECT 来创建子查询。这与连接相同

CROSS APPLY 是 INNER JOIN 的超集,OUTER APPLY 是 LEFT 的超集。您不能将函数应用于nothing,就像 RIGHT 或 FULL 连接一样。

于 2018-08-23T12:27:49.443 回答