我需要一些帮助来理解为什么我没有看到 SELECT 语句中 WHERE 子句形成 RIGHT Join 所期望的结果。 我正在尝试从 RIGHT JOIN 中过滤出 INNER JOIN 结果,我通过以下语句来做到这一点:
SELECT *
FROM ([dbo].[TransactionPBS] RIGHT JOIN [dbo].[LoadFIS]
ON [dbo].[TransactionPBS].[Scenario] = [dbo].[LoadFIS].[Scenario] AND
[dbo].[TransactionPBS].[SubScenario] = [dbo].[LoadFIS].[SubScenario] AND
[dbo].[TransactionPBS].[Version] = [dbo].[LoadFIS].[Version] AND
[dbo].[TransactionPBS].[DivisionCode] = [dbo].[LoadFIS].[DivisionCode] AND
[dbo].[TransactionPBS].[UnitCode] = [dbo].[LoadFIS].[UnitCode] AND
[dbo].[TransactionPBS].[AccountCode] = [dbo].[LoadFIS].[AccountCode] AND
[dbo].[TransactionPBS].[FundCode] = [dbo].[LoadFIS].[FundCode] AND
[dbo].[TransactionPBS].[FunctionCode] = [dbo].[LoadFIS].[FunctionCode] AND
[dbo].[TransactionPBS].[TransDate] = [dbo].[LoadFIS].[TransDate]
)
WHERE [dbo].[LoadFIS].[LoadStatus] = 'Success' AND
[dbo].[TransactionPBS].[TranPBSID] = NULL;`
如果删除 WHERE 子句,我将得到下图中的结果。如您所见,有些行 [dbo].[LoadFIS].[LoadStatus] 等于“Success”AND [dbo].[TransactionPBS].[TranPBSID]:
但是,如果我添加 WHERE 子句,这就是我得到的:
我不明白为什么我没有看到与 WHERE 子句匹配的行。
为了解决这个问题,我在 HOING 语句两边加上了括号,但没有成功。
没关系。我简直不敢相信我这么傻。我必须使用 IS 运算符来检查 NULL。