sql >> Database >  >> RDS >> Mysql

Enkel MySQL-veld met door komma's gescheiden waarden

U kunt deze oplossing gebruiken:

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

SQLFiddle

U moet uw ontwerp echter echt normaliseren en een kruisverwijzingstabel gebruiken tussen berichten en afbeeldingen. Dit zou de beste en meest efficiënte manier zijn om N:M (veel-op-veel) relaties weer te geven. Het is niet alleen veel efficiënter om op te halen, maar het zal bijwerken ook enorm vereenvoudigen. en verwijderen beeldassociaties.

Zelfs als je de N:M-relatie correct hebt weergegeven met een kruisverwijzingstabel, kun je nog steeds de imageid krijgen is in CSV-formaat:

Stel je hebt een posts_has_images tabel met primaire sleutelvelden (postid , imageid ):

U kunt GROUP_CONCAT() . gebruiken om een ​​CSV van de imageid . te krijgen 's voor elke postid :

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


  1. Common Sense-licentiewijzigingen voor SQL Server 2014 Standard Edition

  2. Hoe een Active Directory-gebruikersgroep toe te voegen als login in SQL Server

  3. Rij overslaan bij het importeren van een slechte MySQL-dump?

  4. Aan de slag met MariaDB met Docker, Java Spring en JDBC