MySql - 包含多个单词的拆分记录

时间:2017-05-10 11:32:00

标签: php mysql

我是MySQL新手以及与编码有关的一切,我需要你的帮助! 我有一个包含以下列的表:

git rm -rf projectB && git checkout ai298349y -- projectB && git add projectB && git commit -m 'revert project B to good state'

'keywords'列包含多个单词,其间有逗号(例如:word1,word2,word3等...) 我有一个搜索机器人(用PHP编写) 每当用户提出问题时(问题应转换为数组/关键字) 然后查询应搜索关键字以查找包含最匹配关键字的行并显示答案。

有没有正确的方法呢? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

在MySQL中是可能的(参见SQL split values to multiple rows),但最佳实践和最方便的解决方案是规范化,第一种形式(原子性)是准确的。

创建一个名为keywords的新表,其中keyword_id(已编入索引)和keyword(唯一),在两个字段中添加复合主键。

从主表和question_has_keywords创建另一个名为id的表,其中包含keyword_id两个外键。

这称为N到M关系表,因为许多问题可以有很多关键字。

要查找数据,您可以使用JOIN

Funfact - 使用MongoDB Aggregation($unwind管道阶段)这将是一项非常简单的任务。

答案 1 :(得分:0)

我建议使用FIND_IN_SET()函数搜索以逗号分隔的列中的关键字