3

我正在实施标签系统...

目前我有tags带有name, description,createdby字段的表格。

并且images有一个字段的表tags。在此字段中,我将放置表格中的标签名称tags,用逗号分隔。

但是,如果我想获取所有带有标签的图像,Foo我该如何形成查询?因为该字段将包含多个用逗号分隔的标签。

4

3 回答 3

3

不确定您是否考虑过规范化图像表,但这将是这里的最佳解决方案。

而不是拥有

在此处输入图像描述

以这种方式构建您的表格

在此处输入图像描述

然后你可以运行这个SQL语句来返回所有带有特定标签的图片

SELECT * FROM images
WHERE tags = 'forest';

或者,如果出于某种原因需要将表格保持为当前格式,则可以使用

SELECT * FROM images
WHERE tags LIKE '%forest%';

以上 2 个示例中的单词“森林”是您要搜索的标签

于 2013-01-21T00:26:10.363 回答
2

尝试这样的事情:

SELECT * FROM images WHERE tags = 'Foo' OR tags LIKE 'Foo,%' OR tags LIKE '%,Foo' OR tags LIKE '%,Foo,%'
于 2013-01-20T22:56:02.817 回答
0

将标签 ID 存储在tags如下字段中:',3,17,55,'

当您对数据库执行查询时,您将能够使用这样的快速构造:

SELECT * FROM images WHERE INSTR(tags,',$tag_id,')>'0'

而不是使用缓慢的“LIKE '%$tag_id'”

于 2013-01-20T23:03:38.333 回答