在SQL Server中,OUTER APPLY和OUTER JOIN有什么区别?我何时以及如何使用它们?
答案 0 :(得分:5)
我本着欢迎新用户访问该网站的精神回答。
OUTER APPLY
可以实现LEFT JOIN
可以做的一切-甚至更多。
JOIN
是关系数据库中的原始操作。这是SQL的教学方法,有助于学习关于集合的思维方式-JOIN
通常与两个集合的笛卡尔积的某些子集相关。
APPLY
实现了技术上所谓的“横向连接”。我将这些视为相关子查询的变体。从本质上讲,这些是相关的子查询,可以返回多于一列和多于一列。
我对关系数据库的理解牢固地立足于JOIN
。在教授SQL时,这就是解释表之间关系的方式。
也许有一天,APPLY
(或其他数据库中使用的LATERAL
)将成为SQL教学的默认方法。但是,我不认为APPLY
可以帮助人们理解基于集合的思维,因此我更喜欢先学习和使用JOIN
,然后在许多其他情况下使用APPLY
有用。
答案 1 :(得分:1)
首先,我真的不知道T-SQL中默认的OUTER JOIN是什么(我敢打赌FULL),但是无论如何,我认为还不清楚-最好使用LEFT,RIGHT或FULL在需要时明确加入。
JOIN连接表。已经存在的子查询或子查询。
APPLY在(左)表的每一行中应用(duh)一个表值函数等效项。一些有趣的情况是:
CROSS APPLY是INNER JOIN的超集,而OUTER APPLY是LEFT的超集。您无法像