我在一个存储的Proc中有一条语句,它在运行错误检查之前使用NOT in语句过滤掉某些记录。
WHERE Column1 NOT IN (X,Y)最近引入了一个新的变量,我需要在其中一个错误检查语句之前过滤掉它。我想写的是。
WHERE Column1 NOT IN (X,Y) OR Column2 NOT IN (UD,CD)这不会起作用,因为我不能让第二个not IN识别WHERE。UD,CD将继续作为列而不是列中的值进行拉取。仅供参考,此列中可能有7个可能的值。而且我尝试过的所有嵌套方法都不适合这个场景。我遗漏了什么?我应该采用完全不同的方法吗?
来自@Bjones的帖子和来自@ _______________________Edit_________________________________________________的帖子基本上解决了我的问题。当我返回并查看表是如何创建的时,我注意到IN语句需要使用单引号。除此之外,@Briangerhards的帖子促使我查看现有的过滤器,我意识到,由于数据的关系,第二个NOT In语句需要包含在第一个and语句中,以便过滤器正确工作。如果我首先看到的是后者,我可能永远不会发帖,因为我最初尝试的是单引号。当过滤器失败时,我认为是他们( '')出了问题,而不是我的结构。我想这应该是一个教训,不要惊慌。哈哈,再次感谢大家的帮助。
发布于 2015-07-23 05:02:24
UPDATE Table1
SET Column3 = '06,'
WHERE Column1 NOT IN (X,Y)
OR (
Column2 NOT IN (UD,CD)
AND (Column4 = 'Y' AND Column5 = '000000')
)
OR (
Column4 = 'Y' AND Column2= 'XX'
)'我在这里看到了一些仅根据逻辑就可以更正的项目。请参阅附加的括号
发布于 2015-07-23 05:28:58
这行得通吗?
WHERE Column1 NOT IN (X,Y) AND Column2 NOT IN ('UD','CD')请注意单引号的变化以及AND而不是OR。
发布于 2019-04-25 15:18:30
尝试使用“Except”删除行,而不是组合两个NOT运算符:
SELECT * FROM TableName
EXCEPT
SELECT * FROM TableName WHERE Column1 IN (X,Y) OR Column2 IN (UD,CD)https://stackoverflow.com/questions/31572099
复制相似问题