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
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 và 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