Mysql使用IN搜索包含每个IN子句单词的条目
Posted
技术标签:
【中文标题】Mysql使用IN搜索包含每个IN子句单词的条目【英文标题】:Mysql using IN to search for entry which contains every IN clausle word 【发布时间】:2016-04-26 18:30:42 【问题描述】:我有这个 mysql 查询:
SELECT page_id FROM page
WHERE page_title IN ('paul', 'mccartney')
我的目标是获取包含这两个词的文章(在这个例子中可能有更多的词)。我有一篇文章,其中page_title
包含'paul mccartney'
。他只搜索包含一个单词的行的问题,它返回给我的条目只有'paul'
作为page_title
。我希望服务器返回 page_title
包含我在 in clausle 中的每个单词的行。
【问题讨论】:
“我有一篇文章 page_title 包含 'paul mccartney'” 而你使用的是IN()
?这没有任何意义,你的问题也不清楚。您需要向我们展示您的数据库架构是什么样的。
看起来像这样prntscr.com/9smpoe
IN()
是一个列的数组搜索。你想要WHERE page_title = "paul mccartney"
是的,这毫无意义,我不知道如何快速解决问题,因为我知道我可以对每个单词使用 LIKE 参数,但如果超过 3 个单词,它会非常慢.
怎么会慢?如果您的数据库没有被索引,那么这会减慢它的速度。 MySQL 应该能够毫无问题地处理数千条记录。您的查询失败,因为它们包含下划线。另一个问题
【参考方案1】:
你总是可以使用union
SELECT page_id FROM page
WHERE page_title Like '%paul%'
UNION
SELECT page_id FROM page
WHERE page_title Like '%mccartney%'
【讨论】:
以上是关于Mysql使用IN搜索包含每个IN子句单词的条目的主要内容,如果未能解决你的问题,请参考以下文章