在同一查询中使用WHERE IN和WHERE NOT IN

时间:2014-06-10 15:17:33

标签: mysql sql

是否可以在mysql查询中使用WHERE IN和WHERE NOT IN?

我尝试在一个查询中使用它们但结果错误。所以我想问一下理论上可以用NOT IN和IN语句排除一些结果吗?

编辑1:我在同一列上使用语句。

2 个答案:

答案 0 :(得分:5)

是的,它完全可能,但除非您将它们用于不同的列,它不会产生很多除非你不控制所涉及的集合,否则感觉不对。 如果您在不同的列中使用它们,那么它就非常有意义。

例如,这在大多数情况下都没有意义:

WHERE A IN (1, 2, 3) AND A NOT IN (4, 5, 6)

...因为如果A位于1, 2, 3,根据定义,它不在4, 5, 6中。第二部分是多余的。刚

WHERE A IN (1, 2, 3)

就是你所需要的。但是你可以做(例如,当你不知道这些是什么时,你从其他来源获得它们):

WHERE A IN (1, 2, 3) AND A NOT IN (3, 4, 5)

将归结为:

WHERE A IN (1, 2)

但这有道理:

WHERE A IN (1, 2, 3) AND B NOT IN (4, 5, 6)

(删除是由于对问题的编辑。)

答案 1 :(得分:1)

是。例如:

SELECT * 
FROM someTable
WHERE id IN (1,2,3,4) AND name NOT IN ('foo','bar','baz');