首页 > 解决方案 > 具有多个值的 FIND_IN_SET

问题描述

我想从数据库字段中搜索多个值。以下是我的查询。

SELECT * FROM `tablename` 
WHERE FIND_IN_SET('12,13,15,15',category_id) 

我如何搜索它对我不起作用。

在此处输入图像描述

标签: mysqlsqldatabase

解决方案


FIND_IN_SET()只能用于搜索逗号分隔列表中的单个值,它不适用于两个列表。

您需要为每个值单独调用它。

SELECT * FROM tablename
WHERE FIND_IN_SET('12', category_id) OR FIND_IN_SET('13', category_id) OR FIND_IN_SET('15', category_id)

如果你规范化你的模式而不是使用逗号分隔的列表会更好。如果您使用类别 ID 创建一个多对多表,您可以执行以下操作:

SELECT t1.*
FROM tablename AS t1
JOIN item_categories AS c ON t1.id = c.table_id
WHERE c.category_id IN (12, 13, 15)

推荐阅读