Mysql
 sql >> Base de données >  >> RDS >> Mysql

FIND_IN_SET avec plusieurs valeurs

FIND_IN_SET() ne peut être utilisé que pour rechercher une seule valeur dans une liste séparée par des virgules, cela ne fonctionne pas avec deux listes.

Vous devrez l'appeler séparément pour chaque valeur.

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

Il serait préférable de normaliser votre schéma au lieu d'utiliser des listes séparées par des virgules. Si vous créez une table plusieurs-à-plusieurs avec les ID de catégorie, vous pouvez :

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)