是否可以在mysql查询中使用WHERE IN和WHERE NOT IN?
我尝试在一个查询中使用它们但结果错误。所以我想问一下理论上可以用NOT IN和IN语句排除一些结果吗?
编辑1:我在同一列上使用语句。
答案 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');