我是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编写) 每当用户提出问题时(问题应转换为数组/关键字) 然后查询应搜索关键字以查找包含最匹配关键字的行并显示答案。
有没有正确的方法呢? 提前谢谢!
答案 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()函数搜索以逗号分隔的列中的关键字