首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中使用多个NOT IN语句

在SQL中使用多个NOT IN语句
EN

Stack Overflow用户
提问于 2015-07-23 03:16:42
回答 3查看 9.7K关注 0票数 1

我在一个存储的Proc中有一条语句,它在运行错误检查之前使用NOT in语句过滤掉某些记录。

代码语言:javascript
复制
WHERE Column1 NOT IN (X,Y)

最近引入了一个新的变量,我需要在其中一个错误检查语句之前过滤掉它。我想写的是。

代码语言:javascript
复制
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语句中,以便过滤器正确工作。如果我首先看到的是后者,我可能永远不会发帖,因为我最初尝试的是单引号。当过滤器失败时,我认为是他们( '')出了问题,而不是我的结构。我想这应该是一个教训,不要惊慌。哈哈,再次感谢大家的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-23 05:02:24

代码语言:javascript
复制
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'
       )'

我在这里看到了一些仅根据逻辑就可以更正的项目。请参阅附加的括号

票数 0
EN

Stack Overflow用户

发布于 2015-07-23 05:28:58

这行得通吗?

代码语言:javascript
复制
WHERE Column1 NOT IN (X,Y) AND Column2 NOT IN ('UD','CD')

请注意单引号的变化以及AND而不是OR。

票数 1
EN

Stack Overflow用户

发布于 2019-04-25 15:18:30

尝试使用“Except”删除行,而不是组合两个NOT运算符:

代码语言:javascript
复制
SELECT * FROM TableName

EXCEPT

SELECT * FROM TableName WHERE Column1 IN (X,Y) OR Column2 IN (UD,CD)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31572099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档