MYSQL将字段与逗号分隔的关键字匹配到另一个字段

时间:2017-05-05 16:53:17

标签: php mysql join

所以我有两个表,一个是问题,它有一个描述字段,我试图与主题表search_keyword字段匹配。

例如,问题表描述字段包含:

q.description 
-------------
Have you ever traveled to China?

主题表上的search_keyword字段包含:

t.search_keywords
-------------
travel, traveled, traveling, traveler, travel agency, jet set

所以基本上我试图根据具有任何关键字的描述来缩小问题的结果集。

到目前为止,这是我的查询,我获得了主题URL,这是一个缩小了一些内容的字段,但是必须通过将描述与search_keywords匹配来缩小范围。

SELECT * FROM question q 
         LEFT JOIN topic t ON t.category_id = q.category_id 
         WHERE t.url = 'travel' AND 
         FIND_IN_SET(q.description, t.search_keywords)

注意:遗憾的是我无法更改数据库

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您应该将关键字存储为单独的行而不是逗号分隔值:

t.search_keywords
-------------
travel
traveled
traveling
traveler
travel agency
jet set

然后,您只需向两侧添加%即可找到匹配项:

select *
from question q
left join topic t on t.category_id = q.category_id
where t.url = 'travel'
    and q.description like concat('%', t.search_keywords, '%');