MS-Access 查询过滤器“=”上正常但当我使用“<>”时却不是?

发布于 2024-09-15 07:32:29 字数 698 浏览 9 评论 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'));

I am using Microsoft Access 2000,

This query is filtering when I use "=" condition, but it is not filtering when i use "<>".
What might be the problem?

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'));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-09-22 07:32:29

为什么不尝试:

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 人员,但我相信这会实现您想要的。

Why not try:

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'));

Not much of an Access person, but I believe that would acheive what you want.

爱殇璃 2024-09-22 07:32:29

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

WHERE col = 'value'

返回 col 不为 null 且值为“value”的所有行,

WHERE col <> 'value'

返回 col 不为 null 且 col 的值不为“value”的所有行,

WHERE col is null

返回 col 为 null 的所有行。

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

WHERE col is null OR col <> 'value'

Maybe the column has null values? SQL (and hence, I suppose Access) uses three valued logic. There is true, false, and unknown. and NUll values are assumed unknown. So

WHERE col = 'value'

returns all rows where col is not null and has the value 'value'

WHERE col <> 'value'

returns all rows where col is not null and the value of col is not 'value'

WHERE col is null

returns all rows where col is null.

To return the rows that do not fulfill col = 'value', you will have to use

WHERE col is null OR col <> 'value'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文