我使用的是Microsoft Access 2000,
当我使用“=”条件时,此查询会进行过滤,但当我使用“<>”时,它不会过滤。 可能是什么问题?
SELECT tblRevRelLog_Detail.RevRelTrackingNumber, tblRevRelLog_Detail.PartNumber, tblRevRelLog_Detail.ChangeLevel, tblRevRelLog_Detail.Version, tblRevRelLog_Detail.JobPnType, tblRevRelLog_Detail.EdsName, tblRevRelLog_Detail.FmeaText1, tblRevRelLog_Detail.FmeaText2, tblRevRelLog_Detail.LasdtEvent, tblRevRelLog_Detail.DetailerNamePerPartNumber, tblRevRelLog_Detail.DetailerCompanyPerPartNumber
FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber
WHERE (((tblEventLog.EventTypeSelected)<> 'Pn REMOVED from Wrapper'));
答案 0 :(得分:0)
也许列有空值? SQL(因此,我认为Access)使用three valued logic。有真实,虚假和未知。和NUll值假设未知。所以
WHERE col = 'value'
返回col不为null且值为'value'的所有行
WHERE col <> 'value'
返回col 不为空且 col的值不是'value'的所有行
WHERE col is null
返回col为null的所有行。
要返回不符合col = 'value'
的行,您必须使用
WHERE col is null OR col <> 'value'
答案 1 :(得分:0)
为什么不尝试:
SELECT td.RevRelTrackingNumber,
td.PartNumber,
td.ChangeLevel,
td.Version,
td.JobPnType,
td.EdsName,
td.FmeaText1,
td.FmeaText2,
td.LasdtEvent,
td.DetailerNamePerPartNumber,
td.DetailerCompanyPerPartNumber
FROM tblRevRelLog_Detail td
LEFT JOIN tblEventLog te ON td.PartNumber = te.PartNumber
WHERE NOT(((te.EventTypeSelected) = 'Pn REMOVED from Wrapper'));
没有多少Access用户,但我相信这会实现你想要的。