单个MySQL字段,用逗号分隔值[重复]
:
7年前关闭。
mysql是多列数组
我有两个表:
帖子表
PostID | Gallery 1 | 4,7,8,12,13
2 | 1,2,3,4
3 | 5,8,9
4 | 3,6,11,14
Gallery中的值是Images表中的主键:
图片表
ImageID | FileName 1 | something.jpg
2 | lorem.jpg
3 | ipsum.jpg
4 | what.jpg
5 | why.jpg
我之所以这样做,而不仅仅是在Images表中添加PostID键,是因为这些图像可以与许多不同的帖子相关联。我想我可以为关系添加另一个表,但是就我要添加到其中的jQuery脚本而言,逗号分隔的值更易于使用。
如果我在需要与PostID 3关联的图像的页面上,我可以运行哪种查询来为其输出所有文件名?
回答:
您可以使用以下解决方案:
SELECT b.filenameFROM posts a
INNER JOIN images b ON FIND_IN_SET(b.imageid, a.gallery) > 0
WHERE a.postid = 3
SQLFiddle
但是,您应该真正规范化设计,并在帖子和图片之间使用交叉引用表。这将是表示N:M(多对多)关系的最好,最有效的方法。它不仅检索效率更高,而且将大大简化
更新 和 删除 图像关联的过程。
…但是就我要添加到其中的jQuery脚本而言,逗号分隔的值更易于使用。
即使您用交叉引用表正确表示了N:M关系,您仍然可以imageid
CSV格式获取的:
假设你有一个posts_has_images
与主键字段(表postid
,imageid
):
您可以使用GROUP_CONCAT()
获得的CSV imageid
的每个postid
:
SELECT postid, GROUP_CONCAT(imageid) AS galleryFROM posts_has_images
GROUP BY postid
以上是 单个MySQL字段,用逗号分隔值[重复] 的全部内容, 来源链接: utcz.com/qa/412415.html