2

我想在 MySql 中使用 match 来搜索那些在 state 字段中不包含“rajasthan”的行。

我的查询是这样的:

SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE) 

但是,它返回一个空的结果集。

这有什么问题?

4

2 回答 2

8

我相信这会成功:

SELECT 
  *
FROM 
  Member
WHERE 
  NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)

资料来源:MySQL Boolean Full-Text Searches 中的“Show all except”

当心-我相信这将进行全表扫描,并且此查询不会像您希望的那样从全文索引中受益。

至于你的空结果:

注意:- 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”</p>

来源

于 2011-05-12T04:25:27.430 回答
-1

- 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”</p>

因此,请尝试附加到您的查询OR 1 = 1中,以便查询返回您的所有记录而不使用 MATCH 运算符

于 2011-05-12T04:32:23.557 回答