在数据库中搜索特定标签

时间:2013-05-13 02:34:07

标签: mysql

我有一个名为tags的图像表。典型的条目如下所示:

id    link    tags
-------------------
1     [link]  funny,not-cool,work

我有一个搜索页面,用户可以在其中输入标签来搜索图像。他们可以输入以逗号分隔的任意数量的标签

Search: funny, fall, fail

问题是,在数据库中搜索这些标签的最佳方法是什么?一个简单的LIKE会是吗?我知道将每个标记添加到不同的表中并且不用逗号分隔可能更为理想,所以如果我需要更改标记的工作方式,我将会这样做。

1 个答案:

答案 0 :(得分:0)

这里有多个表可能会更好。第一个表格将被称为images,只有idlink。第二个表格将被称为tags,每行都是一个特定标记,例如列idtag。第三个表是一个名为imagetags的联接表,列idimagetagimage中的imagetags列将是images的外键,而tag列将是tags的外键。

使用示例搜索,SQL将类似于:

SELECT images.link 
FROM images 
JOIN imagetags on images.id = imagetags.image
JOIN tags on tags.id = imagetags.tag
WHERE tags.tag in ('funny','fall','fail')