Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pojedyncze pole MySQL z wartościami oddzielonymi przecinkami

Możesz użyć tego rozwiązania:

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

SQLFiddle

Jednak naprawdę powinieneś znormalizować swój projekt i użyć tabeli porównawczej między postami i obrazami. Byłby to najlepszy i najskuteczniejszy sposób przedstawiania relacji N:M (wiele do wielu). Jest nie tylko znacznie wydajniejszy do wyszukiwania, ale znacznie uprości aktualizację i usuwanie skojarzenia obrazów.

Nawet jeśli poprawnie przedstawiłeś relację N:M za pomocą tabeli porównawczej, nadal możesz uzyskać imageid jest w formacie CSV:

Załóżmy, że masz posts_has_images tabela z polami klucza głównego (postid , imageid ):

Możesz użyć GROUP_CONCAT() aby uzyskać plik CSV z imageid dla każdego postid :

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hybrydowa replikacja w chmurze dla MySQL w celu zapewnienia wysokiej dostępności

  2. wyjątek zerowego wskaźnika podczas próby uzyskania dostępu do programu DatabaseHelper w skopiowanej bazie danych z zasobów do danych\dane\

  3. mysql SELECT LIKE musi dopasowywać całe słowa tylko do zmiennej

  4. Wybierz określone wiersze i kolumny z bazy danych SQL

  5. kodowanie base64 w MySQL