首页 > 解决方案 > 选择/更新一个表中的记录,这些记录是从具有多个记录的另一个表列中选择的 LIKE 单词

问题描述

我需要在 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

解决方案


您可以使用exists运算符:

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

推荐阅读