【问题标题】:Finding records that contain keywords查找包含关键字的记录
【发布时间】:2015-09-21 19:00:37
【问题描述】:

我有两张桌子。

表 1 - 包含 500 多个关键字

id
keyword

表 2

id
title
desc
content
...

我正在寻找从表 2 中选择所有记录的最佳方法,其中标题字段包含表 1 中的一个或多个关键字。我认为 LIKE、REGEX 由于性能原因不是好的选择。对于第一张和第二张表,我会不断添加新记录。

【问题讨论】:

    标签: php mysql performance mysqli


    【解决方案1】:

    我会像这样使用concatlike

    SELECT * FROM table_2 AS t2
    LEFT JOIN table_1 AS t1 ON t2.title LIKE CONCAT('%', t1.keyword, '%');
    

    查看SQL FIDDLE

    【讨论】:

    • 您需要调整 select * 以不带回重复的列名,并处理您正在进行左连接并在不匹配时带回空值的事实(边缘条件您没有显示在测试数据中)
    • 这将是修复SQLFiddle的小提琴
    • 我知道,我能应付:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2014-09-04
    • 2016-03-01
    • 2016-04-14
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多