php - 如何从标签列表的标签栏中准确选择标签?

标签 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吗?

最佳答案

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

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';

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

关于php - 如何从标签列表的标签栏中准确选择标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145936/

相关文章:

mysql - 使用子查询计算表一和表二的联合中的不同值

perl - 如何理解用于评估标记的脚本 conlleval.perl?

facebook-graph-api - 无法在 Facebook 页面 PHP SDK Graph API 上标记用户

php - Mysql PHP,如何选择以特定字符开头的数据

php - MySQL PHP 插入日期时间

soap - 使用 PHP soap 函数的自定义 header

php - CodeIgniter - 无法执行带有几个 UPDATE 语句的过程

Flask-SQLAlchemy 使用多个必需标签查询多对多标签

php - 从网站解析比分

php - 将数组插入数据库