如何从一个集合不等于一个值的MySQL中进行选择?

如何从一个集合不等于一个值的MySQL中进行选择?,mysql,set,Mysql,Set,我们有一个问题,因为这是如何设置表。如何从集合不包含值的表中进行选择?如果我们有一套,一套,两套,我们就有了 SELECT * FROM table WHERE column NOT IN('one') 我们仍然会得到那一排。正确的语法是什么 谢谢试试: SELECT * FROM table WHERE FIND_IN_SET('one',column) = 0 我做了一些测试: mysql> CREATE TABLE setTest (s SET('a','b','c','d'))

我们有一个问题,因为这是如何设置表。如何从集合不包含值的表中进行选择?如果我们有一套,一套,两套,我们就有了

SELECT *
FROM table
WHERE column NOT IN('one')
我们仍然会得到那一排。正确的语法是什么

谢谢

试试:

SELECT *
FROM table
WHERE FIND_IN_SET('one',column) = 0
我做了一些测试:

mysql> CREATE TABLE setTest (s SET('a','b','c','d'));
Query OK, 0 rows affected (0.60 sec)

mysql> INSERT INTO setTest VALUES ('a'),('a,b'),('b'),('a,c'),('c,d');
Query OK, 5 rows affected (0.14 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM setTest;
+------+
| s    |
+------+
| a    |
| a,b  |
| b    |
| a,c  |
| c,d  |
+------+
5 rows in set (0.20 sec)

mysql> SELECT * FROM setTest WHERE FIND_IN_SET('a',s) = 0;
+------+
| s    |
+------+
| b    |
| c,d  |
+------+
2 rows in set (0.12 sec)

mysql> SELECT * FROM setTest WHERE FIND_IN_SET('b',s) = 0;
+------+
| s    |
+------+
| a    |
| a,c  |
| c,d  |
+------+
3 rows in set (0.00 sec)


mysql> SELECT * FROM setTest WHERE FIND_IN_SET('b',s) > 0;
+------+
| s    |
+------+
| a,b  |
| b    |
+------+
2 rows in set (0.04 sec)
从mysql手册:

通常,使用FIND_IN_SET()函数或类似运算符搜索集合值:

  SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
  SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
第一条语句查找set_col包含值集成员的行。第二个类似,但不相同:它查找set_col包含值的任何行,甚至作为另一个set成员的子字符串

这就是成功的原因:

SELECT *, FIND_IN_SET('hidden', props) As hidden
FROM gt_content
HAVING hidden IS NULL

一个是用小写字母写的吗?不在('one')不会在'one'上工作。嗨,没有任何结果。你需要给我们更多的数据。你的桌子看起来怎么样。有哪些值,以及如何查询它们。请参阅更新的答案以了解工作代码的示例。这有一定的意义,因为
[FIND_IN_SET()]在任一参数为NULL时返回NULL。
因此我假设
gt_content
允许NULL值,并且您实际上正在查找此类行。如果“在集合中查找”(“隐藏”,道具)=0或“在集合中查找”(“隐藏”,道具)为空,则从gt\u内容中选择*如何?