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

Einzelnes MySQL-Feld mit kommagetrennten Werten

Sie können diese Lösung verwenden:

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

SQLFiddle

Sie sollten Ihr Design jedoch wirklich normalisieren und eine Querverweistabelle zwischen Beiträgen und Bildern verwenden. Dies wäre die beste und effizienteste Art, N:M-Beziehungen (viele-zu-viele) darzustellen. Es ist nicht nur viel effizienter beim Abrufen, sondern es wird auch das Aktualisieren erheblich vereinfachen und Löschen Bildzuordnungen.

Selbst wenn Sie die N:M-Beziehung korrekt mit einer Querverweistabelle dargestellt haben, können Sie immer noch die imageid erhalten im CSV-Format:

Angenommen, Sie haben einen posts_has_images Tabelle mit Primärschlüsselfeldern (postid , imageid ):

Sie können GROUP_CONCAT() verwenden um eine CSV-Datei der imageid zu erhalten 's für jede postid :

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