我希望在MySql中使用匹配来搜索状态字段中不包含“rajasthan”的行。
我的疑问是:
SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE)
但是,它会返回一组空的结果。
这有什么问题?
答案 0 :(得分:4)
我相信这会解决问题:
SELECT
*
FROM
Member
WHERE
NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)
来源:"Show all except" in MySQL Boolean Full-Text Searches
小心 - 我相信这会进行全表扫描,而且您可能希望此查询不会受益于FullText索引。
关于您的空结果:
注意: - 运算符仅用于排除其他搜索项以其他方式匹配的行。因此,布尔模式搜索仅包含以 - 开头的术语 - 返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”
答案 1 :(得分:-1)
- 运算符仅用于排除否则与其他搜索项匹配的行。因此,布尔模式搜索仅包含以 - 开头的术语 - 返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”
因此,请尝试附加到您的查询OR 1 = 1
,以便查询在没有MATCH运算符的情况下返回所有记录