Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bidang MySQL tunggal dengan nilai yang dipisahkan koma

Anda dapat menggunakan solusi ini:

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

SQLFiddle

Namun, Anda harus benar-benar menormalkan desain Anda dan menggunakan tabel referensi silang antara posting dan gambar. Ini akan menjadi cara terbaik dan paling efisien untuk merepresentasikan hubungan N:M (banyak ke banyak). Tidak hanya itu jauh lebih efisien untuk pengambilan, tetapi akan sangat menyederhanakan pembaruan dan menghapus asosiasi gambar.

Bahkan jika Anda merepresentasikan hubungan N:M dengan benar dengan tabel referensi silang, Anda masih bisa mendapatkan imageid dalam format CSV:

Misalkan Anda memiliki posts_has_images tabel dengan bidang kunci utama (postid , imageid ):

Anda dapat menggunakan GROUP_CONCAT() untuk mendapatkan CSV dari imageid 's untuk setiap 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. mysql_result() mengharapkan parameter 1 menjadi sumber daya, diberikan boolean

  2. Perbedaan MySQL dan SQL Server

  3. Setara dengan GROUP_CONCAT di Django

  4. Perbedaan dalam beberapa minggu antara PHP dan MySQL

  5. Subkueri vs bergabung