【问题标题】:Search for rows that contain a string from another table list搜索包含来自另一个表列表的字符串的行
【发布时间】:2018-11-22 12:32:42
【问题描述】:

所以我有 2 张桌子。聊天表,坏词表。现在我需要一个查询来搜索所有包含坏词的聊天。

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

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

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

最好的方法是什么?

【问题讨论】:

    标签: mysql


    【解决方案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 %..% 将无法使用任何索引。

    【讨论】:

    • 谢谢!全文搜索是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2014-03-09
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多