Mysql
 sql >> база данни >  >> RDS >> Mysql

Едно поле на MySQL със стойности, разделени със запетая

Можете да използвате това решение:

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

SQLPiddle

Въпреки това, наистина трябва да нормализирате дизайна си и да използвате таблица за кръстосани препратки между публикации и изображения. Това би бил най-добрият и най-ефективен начин за представяне на отношенията N:M (много към много). Той не само е много по-ефективен за извличане, но и значително ще опрости актуализацията и изтриване асоциации на изображения.

Дори ако сте представили правилно връзката N:M с таблица с кръстосани препратки, все още можете да получите imageid е във формат CSV:

Да предположим, че имате posts_has_images таблица с полета за първичен ключ (postid , imageid ):

Можете да използвате GROUP_CONCAT() за да получите CSV на imageid 's за всеки 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. Защо Java не може да се свърже с MySQL 5.7 след последната актуализация на JDK и как трябва да се коригира? (ssl.SSLHandshakeException:Няма подходящ протокол)

  2. MySql тригер, актуализиране на друга таблица при вмъкване

  3. Как да архивирам/експортирам свързания файл Database database.sql в laravel?

  4. Как да инсталирате MySQL с phpMyAdmin на Debian 7

  5. Какво означава Таблица не поддържа оптимизиране, вместо това да правиш повторно създаване + анализ?