sql >> Base de Datos >  >> RDS >> Mysql

Campo único de MySQL con valores separados por comas

Puedes usar esta solución:

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

SQLFiddle

Sin embargo, realmente deberías normalizar tu diseño y usar una tabla de referencias cruzadas entre publicaciones e imágenes. Esta sería la mejor y más eficiente forma de representar relaciones N:M (muchos a muchos). No solo es mucho más eficiente para la recuperación, sino que simplificará enormemente la actualización y borrar asociaciones de imágenes.

Incluso si representó correctamente la relación N:M con una tabla de referencias cruzadas, aún puede obtener el imageid en formato CSV:

Suponga que tiene un posts_has_images tabla con campos de clave principal (postid , imageid ):

Puedes usar GROUP_CONCAT() para obtener un CSV del imageid para cada postid :

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