所以我有两张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表中的任何单词;最好的办法是什么?
anauzrmj1#
你可以 JOIN 在两张table之间 chat LIKE %bad_word% . 一次聊天可能包含多个坏话;我们只能使用 DISTINCT 关键字。
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,'%')
对于较大的表,我建议使用全文搜索,如下所示 LIKE %..% 将无法使用任何索引。
LIKE %..%
1条答案
按热度按时间anauzrmj1#
你可以
JOIN
在两张table之间chat LIKE %bad_word%
. 一次聊天可能包含多个坏话;我们只能使用DISTINCT
关键字。对于较大的表,我建议使用全文搜索,如下所示
LIKE %..%
将无法使用任何索引。