Mysql
 sql >> Datenbank >  >> RDS >> Mysql

FIND_IN_SET mit mehreren Werten

FIND_IN_SET() kann nur verwendet werden, um nach einem einzelnen Wert in einer kommaseparierten Liste zu suchen, es funktioniert nicht mit zwei Listen.

Sie müssen es für jeden Wert separat aufrufen.

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

Es wäre besser, wenn Sie Ihr Schema normalisieren, anstatt kommagetrennte Listen zu verwenden. Wenn Sie eine Viele-zu-Viele-Tabelle mit den Kategorie-IDs erstellen, könnten Sie Folgendes tun:

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)