如何使用标签列表从标签列中准确选择标签?
例如,下面是使用查询创建的表,但是我想缩小搜索范围,
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-12、tile-10等。
SELECT*
FROM (...) AS k
WHERE k.tags LIKE '%tile-1%'我可以不使用LIKE吗?
发布于 2011-11-16 11:06:07
我建议将模式更改为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';通过这种方式,您不必搜索表(表扫描)-这将成为一个问题,一旦表有更多的行(可伸缩的解决方案)。其次,您可以在标记列上使用索引,以使搜索变得超级快速。
发布于 2011-11-16 10:35:59
由于您使用逗号作为分隔符,因此LIKE-statement必须包含逗号:
SELECT * FROM table WHERE tags LIKE '%title-1,%';https://stackoverflow.com/questions/8145936
复制相似问题