如何使用标签列表从标签列中准确选择标签?

时间:2011-11-16 02:32:41

标签: php mysql tagging sql-like

如何使用标记列表?

从标记列中准确选择标记

例如下面是使用查询创建的表格,但后来我想缩小搜索范围,

page_id         tags
1               tile-1,tile-12,tile-10
2               tile-1,tile-10
3               tile-12,tile-10
4               tile-15,tile-16

我追求的结果是只有tile-1的页面,

page_id         tags
1               tile-1,tile-12,tile-10
2               tile-1,tile-10

但我正在处理的查询会返回所有这些查询,包括tile-12tile-10等。

SELECT*
FROM (...) AS k
WHERE k.tags LIKE '%tile-1%'

我可以不使用LIKE吗?

2 个答案:

答案 0 :(得分:1)

我建议将架构更改为page_id,tag。这样你的数据应该是这样的

1           tile-1
1           tile-12
1           tile-10
2           tile-1
2           tile-10
3           tile-12
3           tile-10
4           tile-15
4           tile-16

然后你可以通过一个简单的查询来完成所有这些,

SELECT * FROM table WHERE tag = 'title-1';

这样您就不必搜索表(表扫描) - 一旦表有更多行(可扩展的解决方案),这将成为一个问题。 其次,您可以在标签列上使用索引,以便更快地进行搜索。

答案 1 :(得分:0)

由于您使用逗号作为分隔符,因此您的LIKE语句必须包含逗号:

SELECT * FROM table WHERE tags LIKE '%title-1,%';