我有一个非常基本的 LEFT OUTER JOIN 来返回左表中的所有结果以及来自更大表的一些附加信息。左表包含 4935 条记录,但是当我将其 LEFT OUTER JOIN 连接到另一个表时,记录数要大得多。
据我所知,LEFT OUTER JOIN 将返回左表中的所有记录以及右表中的匹配记录以及任何无法匹配的行的空值,这绝对是福音,因此我的理解是它应该不可能返回比左表中存在的行更多的行,但它的发生都是一样的!
SQL查询如下:
SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM SUSP.Susp_Visits LEFT OUTER JOIN
DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum
也许我在语法上犯了错误,或者我对 LEFT OUTER JOIN 的理解不完整,希望有人能解释这是怎么发生的?
原文由 Jay Wilde 发布,翻译遵循 CC BY-SA 4.0 许可协议
LEFT OUTER JOIN 将返回 LEFT 表中的所有记录,并尽可能与 RIGHT 表连接。
如果有匹配,它仍然会返回所有匹配的行,因此,LEFT 中的一行匹配 RIGHT 中的两行将返回为两个 ROWS,就像 INNER JOIN 一样。
编辑:作为对您的编辑的回应,我刚刚进一步查看了您的查询,看起来您只是从 LEFT 表中返回数据。因此,如果您只需要 LEFT 表中的数据,并且只希望 LEFT 表中的每一行返回一行,那么您根本不需要执行 JOIN,可以直接从 LEFT 表中执行 SELECT。