Mysql 列上的SQL in子句不能正常工作
我有一个名为“product”的表,它有一个名为“id\u subcategory”的列。 此列包含以逗号分隔的数字列表 问题是,此查询仅当91号是列表中的第一个时才查找它。否则返回0。这是不好的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,%' 这不是因为索引的使用而使用索引,所以如果你经常需要查询子类,你就应该考虑不要存储逗号分
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这样的误报。如果列表项之间存在间距,则需要进行调整,但这是概念。