【发布时间】:2013-08-29 09:50:45
【问题描述】:
我正在使用这个 Mysql 查询:
WHERE fname LIKE '%{$query}%' OR lname LIKE '%{$query}%' OR zipcode LIKE '%{$query}%' OR city LIKE '%{$query}%'
假设我的数据库中有以下信息:
- 名字:比尔
- 姓:盖茨
- 邮编:12345 AA
- 城市:纽约
当我搜索“纽约”时,我得到了预期的结果(比尔盖茨),但是当我搜索“比尔纽约”时,我没有得到任何结果。
跨多列搜索的正确查询是什么?
【问题讨论】:
-
你的表是 InnoDB 吗?
-
为什么这会让您感到疑惑?您查询了一个字符串
bill new york,但没有一列包含该字符串。您得到了new york的结果,因为一列恰好 包含该字符串。没有正确的方法,有一种方法可以为您提供数据,而另一种方法则不能。使用LIKE进行搜索很糟糕,因为它不仅速度慢 - 正如您所经历的那样,它很难正确实施。 Google 关于使用 FULLTEXT 索引和搜索(它与 InnoDB 存储引擎一起使用)来查看人们如何在多个列中搜索多个单词。 -
@mihai 是的 InnoDB 是
-
你的mysql版本是多少?
-
@米海服务器版本:5.5.31