在SQL中使用多个NOT IN语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中使用多个NOT IN语句相关的知识,希望对你有一定的参考价值。

我在存储过程中有一个语句,它在运行错误检查之前使用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个可能的值。并且我尝试过的任何嵌套都不适合这种情况。我错过了什么?我应该接近这个完全不同吗?

_______________________Edit_________________________________________________来自@briangerhards的@Bjones的帖子基本上解决了我的问题。一旦我回过头来看看表是如何创建的,我注意到IN语句需要单引号。除此之外,来自@Briangerhards的帖子促使我查看我现有的过滤器,并且我意识到第二个NOT IN语句需要包含在第一个AND语句中,以便过滤器由于数据的关系而正常工作。如果我第一次看到后者,我可能从来没有发过,因为我最初尝试过单引号。当过滤器失败时,我认为他们('')有错,而不是我的结构。我想这应该是一个不要惊慌的教训。大声笑再次感谢大家的帮助。

答案
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'
       )'

我在这里看到一些可以根据逻辑进行修正的项目。请参阅其他括号

另一答案

这有用吗?

WHERE Column1 NOT IN (X,Y) AND Column2 NOT IN ('UD','CD')

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

另一答案

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

SELECT * FROM TableName

EXCEPT

SELECT * FROM TableName WHERE Column1 IN (X,Y) OR Column2 IN (UD,CD)

以上是关于在SQL中使用多个NOT IN语句的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中使用多个 OR [关闭]

如何在 MS SQL 2005 中使用 SQL XQuery 修改多个节点

是否可以在sql中使用insert插入多个值

在 WHERE 中使用多个 BETWEEN 优化 SQL

如何在字典中使用 pyspark.sql.functions.when() 的多个条件?

如何在 pyspark.sql.functions.when() 中使用多个条件?