我想搜索那些行中不包含“拉贾斯坦邦”在状态字段使用匹配在MySql中。否定匹配
我的查询是这样的:
SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE)
但是,它返回一个空集的结果。
这是什么问题?
我想搜索那些行中不包含“拉贾斯坦邦”在状态字段使用匹配在MySql中。否定匹配
我的查询是这样的:
SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE)
但是,它返回一个空集的结果。
这是什么问题?
我相信这将这样的伎俩:
SELECT
*
FROM
Member
WHERE
NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)
来源:"Show all except" in MySQL Boolean Full-Text Searches
当心 - 我相信这将做一个全表扫描,这查询将不会从全文索引中受益你可能会希望。
至于你空的结果:
注: - 运营商只起到排除以其他方式由其他搜索条件匹配的行。因此,只包含前面的项的布尔模式搜索返回空结果。它不返回“的所有行除包含任何被排除条款的那些。”
- 运算符只作用于排除以其他方式由其他搜索条件匹配的行。因此,只包含前面的项的布尔模式搜索返回空结果。它不返回“的所有行除包含任何被排除条款的那些。”
因此,尝试追加到您的查询OR 1 = 1
这样查询到不匹配运算
雅做返回所有记录。谢谢... – Deepa 2011-05-12 04:27:33
你可以建议我替代查询快速 – Deepa 2011-05-12 04:33:58
你可以考虑这个查询:选择*从成员国不喜欢'%rajasthan%'然而,我的直觉告诉我,这可能是相同的速度或更慢。虽然可能值得一试 – 2011-05-12 14:22:57