我在访问中有这样的陈述:
SELECT *
FROM accountsnew
WHERE [Panels] not like '*IT_OXYC,*' and [Panels] not like '*OXY_SN,*' and [Panels] not like '*OXY_S,*' and [Panels] not like '*OXY_N,*' and [Panels] like '*OXYC_SNEG,*' or [Panels] like '*OXYC_PNEG,*';
由于某种原因,它没有返回正确的数据集。当我更深入地查看返回的数据时,使用excel,我看到它返回的内容实际上是DID包含IT_OXYC,
和其他一些参数。
我的陈述有问题吗?
我正在尝试获取所有没有IT_OXYC,
OXY_SN
,OXY_S,
etc
的记录......并且DO有OXYC_SNEG,
或{{ 1}}
答案 0 :(得分:3)
它可能只是优先级...用大括号来定义它来设置优先级:WHERE(面板不喜欢'1'和面板不喜欢'2')和(面板LIKE'3'或面板喜欢'4')< / p>
答案 1 :(得分:2)
你的逻辑错了。逐位翻译您的请求:
我正在尝试获取所有记录
SELECT * FROM accountsnew
不
没有(...)
有IT_OXYC或OXY_SN或OXY_S等......
(x LIKE' IT_OXYC '或x LIKE' IOXY_SN '或x x LIKE' OXY_S '或......)
和DO有OXYC_SNEG或OXYC_PNEG,
AND(x LIKE' OXYC_SNEG '或x x LIKE' OXYC_PNEG ')
全部放在一起:
SELECT *
FROM accountsnew
WHERE NOT ([Panels] LIKE '*IT_OXYC*' OR
[Panels] LIKE '*IOXY_SN*' OR
[Panels] LIKE '*OXY_S*' OR ...)
AND ([Panels] LIKE '*OXYC_SNEG*' OR
[Panels] LIKE '*OXYC_PNEG*')
答案 2 :(得分:1)
不确定它是否有所作为,但我会把括号放在最后,所以:
WHERE [Panels] not like '*IT_OXYC,*' and [Panels] not like '*OXY_SN,*' and [Panels] not like '*OXY_S,*' and [Panels] not like '*OXY_N,*' and ([Panels] like '*OXYC_SNEG,*' or [Panels] like '*OXYC_PNEG,*');
您只有一个OR
在一行中只包含AND
个。它可能会看到其中一个OR
为真,并认为整条线都是真的
答案 3 :(得分:1)
SELECT *
FROM accountsnew
WHERE ([Panels] not like '*IT_OXYC,*' and [Panels] not like '*OXY_SN,*' and [Panels] not
like '*OXY_S,*' and [Panels] not like '*OXY_N,*')
and ([Panels] like '*OXYC_SNEG,*' or [Panels] like '*OXYC_PNEG,*');
答案 4 :(得分:1)
我记得使用Access更好地说
SELECT *
FROM accountsnew
WHERE NOT [Panels] like '*IT_OXYC,*'
and not [Panels] like '*OXY_SN,*'
and not [Panels] like '*OXY_S,*'
等
答案 5 :(得分:1)
你的一些包含oxyc_sneg和oxcy_pneg的记录,也包含it_oxcy和其他...
因此,当您尝试获取记录时,[Panels]如' OXYC_SNEG,'或[Panels]如' OXYC_PNEG,,它还会为您提供一些记录其中包含OXYC_SNEG和it_oxcy或OXYC_PNEG和it_oxcy等......
所以你能在这做什么呢,
SELECT *
FROM accountsnew
WHERE { [Panels] like '*OXYC_SNEG,*' and
{[Panels] not like '*IT_OXYC,*' and [Panels] not like '*OXY_SN,*' and [Panels] not like '*OXY_S,*' and [Panels] not like '*OXY_N,*}
}
or
{[Panels] like '*OXYC_PNEG,*' and
{[Panels] not like '*IT_OXYC,*' and [Panels] not like '*OXY_SN,*' and [Panels] not like '*OXY_S,*' and [Panels] not like '*OXY_N,*} }
这应该可以正常工作,但在尝试之前只需用正确的语法编写。
答案 6 :(得分:1)
不要使用OR使用AND这将正常工作