我有一个名为的表product,category我在该字段中插入了大约5到6个类别.
例如2,3,4,5,12就是这样.
但是,当我使用此查询时,它不起作用:
SELECT * FROM product WHERE category in '3'
SELECT * FROM `product` WHERE `category` LIKE '%3%'
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助解决它
SELECT * FROM product WHERE FIND_IN_SET('3',category);
Run Code Online (Sandbox Code Playgroud)
请参阅:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set
如果您没有find_in_set,则此代码将是等效的:
SELECT * FROM product
WHERE category = '3' or category LIKE '%,3,%'
or category LIKE '3,%' or category LIKE '%,3';
Run Code Online (Sandbox Code Playgroud)
否则你会得到3的误报'13, 23, 40'.
警告
请注意,在字段中放置CSV列表是非常糟糕的做法.
通过从字段中提取列表并将其放在另一个表中的1对N关系,您将获得更好的性能.