所以我有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的任何单词;
最好的方法是什么?
答案 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 %..%
将无法使用任何索引。