Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 列上的SQL in子句不能正常工作_Mysql_Sql_List_Where - Fatal编程技术网

Mysql 列上的SQL in子句不能正常工作

Mysql 列上的SQL in子句不能正常工作,mysql,sql,list,where,Mysql,Sql,List,Where,我有一个名为“product”的表,它有一个名为“id\u subcategory”的列。 此列包含以逗号分隔的数字列表 问题是,此查询仅当91号是列表中的第一个时才查找它。否则返回0。这是不好的 SELECT COUNT(*) FROM product WHERE 91 IN (id_subcategory); 我该怎么办?您可能需要WHERE','| | id|u子类别| |','比如“%”,91,%' 这不是因为索引的使用而使用索引,所以如果你经常需要查询子类,你就应该考虑不要存储逗号分

我有一个名为“product”的表,它有一个名为“id\u subcategory”的列。 此列包含以逗号分隔的数字列表

问题是,此查询仅当91号是列表中的第一个时才查找它。否则返回0。这是不好的

SELECT COUNT(*) FROM product WHERE 91 IN (id_subcategory);
我该怎么办?

您可能需要WHERE','| | id|u子类别| |','比如“%”,91,%'


这不是因为索引的使用而使用索引,所以如果你经常需要查询子类,你就应该考虑不要存储逗号分隔的列表。

你应该规范化你的数据模型,并去掉逗号分隔的值列表。从产品中选择“计数”*,其中IDID子类别像“%,91,%”;更新您的问题并添加适当的数据sample@Roy,id_子类别为列。我想看看我的值是否在其中。@Valentitanasescu,你知道SQL是如何工作的吗?WHERE列“%YOUR-VALUE%”是正确的方法。是的,同意,听起来id应该在一个单独的表中。这可能会返回误报,例如991,应该是WHERE',“| | id| u子类别| |',”像“%”,91,%“WHERE是什么意思?@valentitanasescu这会在列表的开头和结尾添加一个逗号,然后查找,91,特别是为了避免像991这样的误报。如果列表项之间存在间距,则需要进行调整,但这是概念。