mysql - 将文章标题与另一个表中列出的标签相匹配

标签 mysql match match-against

我需要在 mysql 中进行一个查询,该查询可以列出一个表中匹配的 tag_names 以及另一个表中的article_title 列

tags table
------------
tag_id  tag_name
--------------
1      travel
2      tickets
3      business
4      america
article table
-------------
article_id  article_title
---------   --------------
1           travel tips to america
2           cheap tickets for favorite destinations
3           prices for business class tickets to america
expected output
--------------
article_id tag_id    tag_name
---------- -------   ----------
1           1        travel
1           4        america
2           2        tickets
3           3        business
3           2        tickets
3           4        america

最佳答案

查询应如下所示:

SELECT a.article_id, t.tag_id, t.tag_name 
FROM article a
JOIN tags t
ON a.article_title LIKE CONCAT('%', t.tag_name, '%')
ORDER BY a.article_id;

但是,如果您想使用空格标记标签,则应将查询的第 4 行替换为

ON a.article_title LIKE CONCAT('% ', t.tag_name, ' %')

这不会考虑标题中的标签america,例如

美国梦是美国的民族精神

关于mysql - 将文章标题与另一个表中列出的标签相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47497088/

相关文章:

PHP 在不存在时回显重复行

regex - 查找重复项(正则表达式)

php - MYSQL 匹配关键字列表逗号分隔文本字段

Mysql Match Against query - 在结果中显示匹配的关键字

php - MySql - 避免使用联结和外键的 SET()

php - Laravel 5.6 保存测验记录时 Eloquent 完整性约束违规

java - PreparedStatement 批处理的性能不如普通 Statement

windows - 找到零个 Opengl 3.2 像素格式匹配项?

r - 匹配从另一个数据框中选择最大值

mysql - MATCH AGAINST 不获取多列