我有一个非常基本的 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 的理解不完整,希望有人可以解释这是如何发生的?
最佳答案
LEFT OUTER JOIN 将返回左表中与右表(如果可能)连接的所有记录。
如果存在匹配,它仍然会返回所有匹配的行,因此,LEFT 中的一行与 RIGHT 中的两行匹配将作为两行返回,就像 INNER JOIN 一样。
编辑: 为了响应您的编辑,我刚刚进一步查看了您的查询,看起来您只从左表返回数据。因此,如果您只需要 LEFT 表中的数据,并且只希望 LEFT 表中的每一行返回一行,那么您根本不需要执行 JOIN,只需直接从 LEFT 表执行 SELECT 即可。
关于sql - LEFT OUTER JOIN 如何返回比左表中存在的记录更多的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916414/