我有一个查询,它返回我在方案表中的所有方案
SELECT DISTINCT RiskScenarios.riskScenID, RiskScenarios.riskScenName
FROM RiskScenarios
我还有一个返回与上面相同的字段的查询,但是这次使用表单上的联结表和列表框来返回特定风险适用的场景
Select RiskScenarios.riskScenID, RiskScenarios.riskScenName
FROM RiskScenarios INNER JOIN TopRiskstoScenarios
ON RiskScenarios.riskScenID = TopRiskstoScenarios.riskScenID
WHERE TopRiskstoScenarios.topRiskID = [Forms]![ERMForm]![lTopRisks]
我想要做的是在第一个查询中返回记录,同时省略第二个中的记录,我试图将其作为
SELECT DISTINCT RiskScenarios.riskScenID, RiskScenarios.riskScenName
FROM RiskScenarios
WHERE NOT EXISTS (Select RiskScenarios.riskScenID, RiskScenarios.riskScenName
FROM RiskScenarios INNER JOIN TopRiskstoScenarios
ON RiskScenarios.riskScenID = TopRiskstoScenarios.riskScenID
WHERE TopRiskstoScenarios.topRiskID = [Forms]![ERMForm]![lTopRisks])
但是,此查询不返回任何行。我完全被难过了,任何帮助都会受到高度赞赏。
答案 0 :(得分:0)
试试这个:
SELECT DISTINCT RiskScenarios.riskScenID, RiskScenarios.riskScenName
FROM RiskScenarios
LEFT JOIN (Select TopRiskstoScenarios.riskScenID FROM TopRiskstoScenarios
WHERE TopRiskstoScenarios.topRiskID = [Forms]![ERMForm]![lTopRisks]) AS TopRisk
ON RiskScenarios.riskScenID = TopRisk.riskScenID
WHERE TopRisk.riskScenID IS NULL
LEFT JOIN
包含“左表”RiskScenarios
中的所有行,仅包含与“右表”匹配的RiskScenarios.riskScenID的记录(子查询标记为TopRisk
)。
如果没有匹配的TopRisk.riskScenID
,则此查询返回NULL
。最终的WHERE
子句删除了非空匹配,只留下RiskScenarios
中没有匹配的TopRisk
。