下面是我的左外联接查询:
SELECT N.ACCOUNT, N.FLD1, N.FLD2, P.ACCOUNT,P.FLD1, P.FLD2, P.FLD3, P.FLD4, P.FLD5, P.FLD6
FROM NEWYORK N LEFT OUTER JOIN PITTSBURG P ON N.ACCOUNT = P.ACCOUNT
WHERE N.FLD1 in ('EC','BP','J1','MP','C1','BP','AD','E1' )
AND N.FLD2 = 'CHICAGO'
GROUP BY
N.ACCOUNT, N.FLD1, N.FLD2, P.ACCOUNT,P.FLD1, P.FLD2, P.FLD3, P.FLD4, P.FLD5, P.FLD6
(1)我的查询在P.ACCOUNT,P.FLD1,P.FLD2,P.FLD3,P.FLD4,P.FLD5,P.FLD6中得到我(null)。 (2)当我做[从PITTSBURG P选择* - 这里有所有与NEWYORK N账户匹配的账户,所有账户都是P.ACCOUNT,P.FLD1,P.FLD2,P.FLD3,P.FLD4,P。 FLD5,P.FLD6有数据)。
想知道我的查询在右表中存在实际匹配记录时返回(null)记录。
非常感谢你的帮助
答案 0 :(得分:1)
问题应该在where子句中,如果记录匹配就像你在字段ACCOUNT中所说的那样,你在where子句中得到null,可能是在你应用where子句时,NEWYORK表中的结果行在ACCOUNT字段与PITTSBURG表中有相应的匹配,测试删除where子句并查看结果。
答案 1 :(得分:0)
我可以使用可用的联接来查看您的记录是否确实匹配,请参阅: What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?
如果他们没有,请检查列中的变量类型是否存在不匹配(例如:nvarchar vs int)
答案 2 :(得分:0)
1-测试查询:
SELECT N.ACCOUNT, N.FLD1, N.FLD2, P.ACCOUNT,P.FLD1, P.FLD2, P.FLD3, P.FLD4, P.FLD5, P.FLD6
FROM NEWYORK N LEFT OUTER JOIN PITTSBURG P ON N.ACCOUNT = P.ACCOUNT
如果您有数据
2-检查 FLD2列有'CHICAGO'数据?对于此查询:
SELECT N.ACCOUNT, N.FLD1, N.FLD2, P.ACCOUNT,P.FLD1, P.FLD2, P.FLD3, P.FLD4, P.FLD5, P.FLD6
FROM NEWYORK N LEFT OUTER JOIN PITTSBURG P ON N.ACCOUNT = P.ACCOUNT
WHERE N.FLD2 = 'CHICAGO'
3-检查FLD1列是否有'EC','BP','J1','MP','C1','BP','AD','E1'数据?
SELECT N.ACCOUNT, N.FLD1, N.FLD2, P.ACCOUNT,P.FLD1, P.FLD2, P.FLD3, P.FLD4, P.FLD5, P.FLD6
FROM NEWYORK N LEFT OUTER JOIN PITTSBURG P ON N.ACCOUNT = P.ACCOUNT
WHERE N.FLD2 = 'CHICAGO'
AND N.FLD1 in ('EC','BP','J1','MP','C1','BP','AD','E1' )
你的第一张桌子是纽约,第二张桌子是PITTSBURG
您没有任何已加入和已过滤的数据。 你必须检查过滤器和连接。