【问题标题】:Select / Update records in one table that are LIKE words selected from another table column with multiple records选择/更新一个表中的记录,这些记录是从具有多条记录的另一个表列中选择的 LIKE 单词
【发布时间】:2020-04-09 22:59:34
【问题描述】:

我需要在 product.title 中找到类似于多个单词之一的记录。目前这是通过像这样的长查询来完成的:

Select product.product_id, product.name from product WHERE product.name like '%word1%' OR product.name like '%word2%' OR product.name like '%word3%', etc (too many words).

决定将这些词放在一个新表中以便于管理,并使用该表中的记录构建查询

TABLE banned_words.word
word1
word2
word3
etc

我尝试了 GROUP_CONCAT 在banned_words.word 前后使用分隔符,以便我可以在子查询中使用它,但结果大于1024 个字符的限制。我不认为我可以使用带有子字符串的连接

有什么建议吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用exists 运算符:

    SELECT product.product_id, product.name
    FROM   product
    WHERE  EXISTS (SELECT *
                   FROM   banned_words
                   WHERE  product.name LIKE CONCAT('%', word, '%')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-26
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2020-12-28
      相关资源
      最近更新 更多