Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trường MySQL đơn với các giá trị được phân tách bằng dấu phẩy

Bạn có thể sử dụng giải pháp này:

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

SQLFiddle

Tuy nhiên, bạn thực sự nên bình thường hóa thiết kế của mình và sử dụng bảng tham chiếu chéo giữa các bài đăng và hình ảnh. Đây sẽ là cách tốt nhất và hiệu quả nhất để biểu diễn mối quan hệ N:M (nhiều-nhiều). Nó không chỉ hiệu quả hơn nhiều cho việc truy xuất mà còn đơn giản hóa rất nhiều việc cập nhật xóa liên kết hình ảnh.

Ngay cả khi bạn đã trình bày đúng mối quan hệ N:M với một bảng tham chiếu chéo, bạn vẫn có thể nhận được imageid của ở định dạng CSV:

Giả sử bạn có posts_has_images bảng có các trường khóa chính (postid , imageid ):

Bạn có thể sử dụng GROUP_CONCAT() để nhận CSV của imageid cho mỗi 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. truy vấn mysql PHP:Tôi muốn một mục cụ thể là đầu tiên và sau đó sắp xếp các mục còn lại

  2. mysql chuyển đổi thời gian 12 giờ thành 24 giờ

  3. mysqli ::query ():Không thể tìm nạp mysqli

  4. Bài hát hùng hồn ở đâu trong tất cả

  5. Trường MySQL đơn với các giá trị được phân tách bằng dấu phẩy