从另一个表列表中搜索包含字符串的行

8fsztsew  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(309)

所以我有两张table。聊天桌,坏话桌。现在我需要一个查询,搜索所有聊天,有坏话。

chat_table(id, user, chat) - contains all chats

bad_words_table(id, word) - contains a list of offensive words.

现在我需要某种查询,从chat\u表中获取所有聊天记录,其中聊天记录包含bad\u words\u表中的任何单词;
最好的办法是什么?

anauzrmj

anauzrmj1#

你可以 JOIN 在两张table之间 chat LIKE %bad_word% . 一次聊天可能包含多个坏话;我们只能使用 DISTINCT 关键字。

SELECT DISTINCT c.*
FROM chat_table AS c
JOIN bad_words_table AS bw 
  ON c.chat LIKE CONCAT('%',bw.word,'%')

对于较大的表,我建议使用全文搜索,如下所示 LIKE %..% 将无法使用任何索引。

相关问题