sql >> Databáze >  >> RDS >> Mysql

FIND_IN_SET s více hodnotami

FIND_IN_SET() lze použít pouze k hledání jedné hodnoty v seznamu odděleném čárkami, nefunguje se dvěma seznamy.

Budete ji muset volat samostatně pro každou hodnotu.

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

Bylo by lepší, kdybyste své schéma normalizovali namísto použití seznamů oddělených čárkami. Pokud vytvoříte tabulku many-to-many s ID kategorií, můžete udělat:

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)



  1. Nelze se připojit k místnímu serveru MySQL přes soket '/tmp/mysql.sock

  2. Připojit se ke kontejneru Docker MySQL z localhost?

  3. Stretch Database v SQL Server 2016 RTM

  4. Databáze vrátila neplatnou hodnotu v QuerySet.dates()