0

我正在使用 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'));
4

2 回答 2

0

也许该列有空值?SQL(因此,我想是 Access)使用三值逻辑。有真、假、未知。和 NUll 值假定为未知。所以

WHERE col = 'value'

返回 col 不为 null 且值为 'value' 的所有行

WHERE col <> 'value'

返回 col不为 null 且col 的值不是 'value' 的所有行

WHERE col is null

返回 col 为空的所有行。

要返回不满足的行col = 'value',您必须使用

WHERE col is null OR col <> 'value'
于 2010-08-19T17:10:10.630 回答
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 的人,但我相信这会达到你想要的。

于 2010-08-19T17:10:28.530 回答