我在第一个表上加入2个表我在第二个表上得到所有相关数据我只得到空值。两个表中都没有空值任何人都可以告诉我为什么会发生这种情况吗?
select * from apmast
left join apitem
on apmast.fvendno + apmast.fccompany = apitem.fcinvkey
答案 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当你需要将表连接回自己来返回数据时,就会使用它。