当连接2个表时,一个表出现null

时间:2014-04-14 16:54:19

标签: sql sql-server tsql

我在第一个表上加入2个表我在第二个表上得到所有相关数据我只得到空值。两个表中都没有空值任何人都可以告诉我为什么会发生这种情况吗?

select * from apmast
left join apitem
on apmast.fvendno + apmast.fccompany = apitem.fcinvkey

2 个答案:

答案 0 :(得分:1)

您的ON存在问题,导致您无法获得匹配的记录。 LEFT JOIN表示您应该从左表中获取所有数据,只从右表中获取匹配的记录,否则NULL表示没有匹配的记录。然而,加入的关键是ON语句。确保apmast.fvendno + apmast.fccompany实际上等于apitem.fcinvkey

答案 1 :(得分:0)

这里是关于连接类型的解释,只是因为你将来陷入困境。

INNER JOIN这将只获取FROM子句和JOINING表中匹配的行。

LEFT OUTER JOIN这将获取FROM子句中指定的表中的所有行,并且只获取JOINING表中匹配的行。

RIGHT OUTER JOIN这将获取JOIN子句中指定的表中的所有行,并且只获取FROM子句中匹配的行。

FULL OUTER JOIN这将获得两个表中的所有行。

SELF JOIN当你需要将表连接回自己来返回数据时,就会使用它。