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

时间:2018-11-22 12:32:43

标签: mysql

所以我有2张桌子。 chat_table,bad_words_table。现在,我需要一个查询来搜索所有单词不好的聊天。

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

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

现在,我需要某种查询来获取来自chat_table的所有聊天记录,而该聊天记录中包含来自bad_words_table的任何单词;

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以JOIN在两个表之间,例如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,'%')

对于较大的表,我建议改用Full Text Searching,因为LIKE %..%将无法使用任何索引。

相关问题