sql >> Database teknologi >  >> RDS >> Mysql

FIND_IN_SET med flere værdier

FIND_IN_SET() kan kun bruges til at søge efter en enkelt værdi i en kommasepareret liste, det virker ikke med to lister.

Du skal kalde det separat for hver værdi.

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

Det ville være bedre, hvis du normaliserede dit skema i stedet for at bruge kommaseparerede lister. Hvis du opretter en mange-til-mange-tabel med kategori-id'erne, kan du gøre:

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. SQL - Tjek om en kolonne automatisk stiger

  2. Postgres holdt lige tilfældigt op med at virke (Rails, PGSQL.5432)

  3. hvordan man vælger tilfældige unikke poster ved hver udførelse af SQL-forespørgslen

  4. hvordan ignorerer jeg backticks i codeigniter, når jeg bruger aktive poster? jeg skal bestille efter sager