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

Enkelt MySQL-felt med kommaseparerede værdier

Du kan bruge denne løsning:

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

SQLFiddle

Du bør dog virkelig normalisere dit design og bruge en krydshenvisningstabel mellem indlæg og billeder. Dette ville være den bedste og mest effektive måde at repræsentere N:M (mange-til-mange) relationer på. Ikke alene er det meget mere effektivt til hentning, men det vil i høj grad forenkle opdatering og sletning billedforeninger.

Selvom du korrekt repræsenterede N:M-relationen med en krydsreferencetabel, kan du stadig få imageid er i CSV-format:

Antag, at du har en posts_has_images tabel med primære nøglefelter (postid , imageid ):

Du kan bruge GROUP_CONCAT() for at få en CSV af imageid 's for hver postid :

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


  1. Installation af PDO-drivere til PostgreSQL på Mac (ved hjælp af Zend til eclipse)

  2. TSQL:Opret en visning, der har adgang til flere databaser

  3. Sådan fungerer Exp()-funktionen i PostgreSQL

  4. Hvordan kombinerer man samlede funktioner i MySQL?