我会简化我的问题以便解释它。
我有一个表格,其中包含用户发布的短信和另一个包含关键字的表格。
因为我不确定我的解释是否足够清楚,所以SQLFiddle就出现了。 http://sqlfiddle.com/#!2/c402a
希望有人能帮助我。
答案 0 :(得分:1)
我找到了我要找的东西。这对我来说并不容易,但这是我的疑问:
SELECT t_msg.msg_usr,
t_list.list_word,
count(t_list.list_word),
t_msg.msg_text
FROM t_msg
INNER JOIN t_list
ON LOWER(t_msg.msg_text) LIKE CONCAT("%", t_list.list_word, "%")
GROUP BY t_msg.msg_usr, t_list.list_word;
SQLFiddle在那里:http://sqlfiddle.com/#!2/ba052/8
答案 1 :(得分:0)
建议不要尝试使用查询解决此问题。可以编写一个查询来执行此操作,这样的查询将分别扫描每个关键字的消息表,并生成计数(或可以分组的行),但这不会扩展,或者在意义上是可靠的语言搜索。
以下是您可能想要做的事情:
如果您正在尝试解决现有数据必须执行上述操作的问题,您可以手动执行此操作,只是为了首先构建该t_keyword_count表(取决于您总共有多少个关键字,但即使有很多,这可以编写脚本)。但是您应该将t_msg.msg_text字段更改(或镜像)为适合文本搜索的字段,并使用SQL文本搜索功能查找关键字。