我想搜索那些行中不包含「拉賈斯坦邦」在狀態字段使用匹配在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