我正在实施标签系统...
目前我有tags
带有name
, description
,createdby
字段的表格。
并且images
有一个字段的表tags
。在此字段中,我将放置表格中的标签名称tags
,用逗号分隔。
但是,如果我想获取所有带有标签的图像,Foo
我该如何形成查询?因为该字段将包含多个用逗号分隔的标签。
不确定您是否考虑过规范化图像表,但这将是这里的最佳解决方案。
而不是拥有
以这种方式构建您的表格
然后你可以运行这个SQL语句来返回所有带有特定标签的图片
SELECT * FROM images
WHERE tags = 'forest';
或者,如果出于某种原因需要将表格保持为当前格式,则可以使用
SELECT * FROM images
WHERE tags LIKE '%forest%';
以上 2 个示例中的单词“森林”是您要搜索的标签
尝试这样的事情:
SELECT * FROM images WHERE tags = 'Foo' OR tags LIKE 'Foo,%' OR tags LIKE '%,Foo' OR tags LIKE '%,Foo,%'
将标签 ID 存储在tags
如下字段中:',3,17,55,'
当您对数据库执行查询时,您将能够使用这样的快速构造:
SELECT * FROM images WHERE INSTR(tags,',$tag_id,')>'0'
而不是使用缓慢的“LIKE '%$tag_id'”