mysql – 存储SQL字符串数组,以及后续查询

我想在SQL数据库中存储可变大小的图像标签列表,然后能够根据标签在数据库中搜索图像.我目前正在从数据库中提取标记列表,并检查查询标记是否包含在数组中.我有什么方法可以将这些格式化为sql查询而不是在我拉出标签后在php中执行它们?

该列表存储为表单的逗号分隔值:

“阳光明媚,海滩,棕榈树”-im1

“手掌,下雨,云”-im2

“冬天,雪,雪人,赃物”-img

我希望能够获得查询标记的联合:
查询“beach,palms”应该返回im1和im2

谢谢

最佳答案
您将希望避免数据库中的分隔列表 – 正如您所发现的那样,这会抵消使用数据库存储结构化数据的优势.相反,您应该创建一个每行一个标记的新表,然后使用外键从主映像表中引用该表.

图像表

> id
> image_name

标签表

> id
> tag_name

Image_Tags表

> image_id(引用图像表主键)
> tag_id(引用标签表主键)

这样,您就可以运行如下查询:

SELECT t.tag_name,i.image_name FROM image_tags it
    INNER JOIN images i on it.image_id = i.id
    INNER JOIN tags t on it.tag_id = t.id
WHERE t.tag_name in ('beach','palms')

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...