FIND_IN_SET具有多个值

时间:2018-07-14 06:31:48

标签: mysql sql database

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

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

我如何搜索其不适用于我。

enter image description here

1 个答案:

答案 0 :(得分:3)

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)