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

Jedno pole MySQL s hodnotami oddělenými čárkami

Můžete použít toto řešení:

SELECT b.filename
FROM posts a
INNER JOIN images b ON FIND_IN_SET(b.imageid, a.gallery) > 0
WHERE a.postid = 3

SQLFiddle

Měli byste však skutečně normalizovat svůj návrh a použít tabulku křížových odkazů mezi příspěvky a obrázky. To by byl nejlepší a nejefektivnější způsob reprezentace vztahů N:M (many-to-many). Nejen, že je mnohem efektivnější pro vyhledávání, ale výrazně zjednoduší aktualizaci a smazání asociace obrázků.

I když jste správně reprezentovali vztah N:M pomocí tabulky křížových odkazů, stále můžete získat imageid 's ve formátu CSV:

Předpokládejme, že máte posts_has_images tabulka s poli primárního klíče (postid , imageid ):

Můžete použít GROUP_CONCAT() získat CSV s imageid 's pro každý postid :

SELECT postid, GROUP_CONCAT(imageid) AS gallery
FROM posts_has_images
GROUP BY postid


  1. JetShowPlan:Primer

  2. Šifrování hesla v Javě nebo MySQL?

  3. Potřebujete pomoc s dotazem sql, abyste našli věci označené všemi zadanými značkami

  4. SQL - Jak objednávat pomocí počítání z jiné tabulky