mysql - 选择/更新一个表中的记录,这些记录是从具有多个记录的另一个表列中选择的 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 个字符的限制。我不认为我可以使用带有子字符串的连接
有什么建议么?
解决方案
您可以使用exists
运算符:
SELECT product.product_id, product.name
FROM product
WHERE EXISTS (SELECT *
FROM banned_words
WHERE product.name LIKE CONCAT('%', word, '%')