如何正确格式化重叠的MySQL IN和NOT IN条件

时间:2018-09-11 20:07:08

标签: mysql

我有以下mySQL表:

data
1
2
3
4
5
6
7
8
9

我想为我的select语句提供两个单独的列表

精选列表:

1,4,5,7

包含列表:

1,2,3,4,5,6,7

我尝试了以下语句:

Select * FROM table WHERE data NOT IN ('1,4,5,7') AND data IN ('1,2,3,4,5,6,7)

期望以下输出:

data
2
3
6

但是我没有收到任何结果。我意识到我通过了一个不可能的条件,但是我不知道如何格式化查询以返回预期的结果。

有人可以告诉我我在做什么错吗?

3 个答案:

答案 0 :(得分:3)

IN接受值列表,而不是包含定值列表的字符串。 例子:

  • x IN (1, 2, 3)
  • x IN ('a', 'b', 'c')

答案 1 :(得分:1)

使用IN (1,2,3)而不是IN ('1,2,3'),因为前者与各个值123进行比较,而后者与文字字符串{{ 1}}。

答案 2 :(得分:-1)

选择* FROM((选择* FROM表WHERE数据不在('1,4,5,7'))AS表WHERE数据IN('1,2,3,4,5,6,7)< / p>

您再试一次