MySql での照合を使用して、状態フィールドに「rajasthan」を含まない行を検索したい。
私のクエリはこれです:
SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE)
ただし、結果の空のセットを返します。
これの何が問題なのですか?
これでうまくいくと思います:
SELECT
*
FROM
Member
WHERE
NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)
ソース: MySQL Boolean Full-Text Searches の「Show all except」
注意してください-これは完全なテーブルスキャンを実行し、このクエリはフルテキストインデックスの恩恵を受けません.
あなたの空の結果に関して:
注: - 演算子は、他の検索語と一致する行を除外するためだけに機能します。したがって、前に - が付いている用語のみを含むブール モードの検索では、空の結果が返されます。「除外された用語を含む行を除くすべての行」は返されません。</p>
- 演算子は、他の検索語と一致する行を除外するためだけに機能します。したがって、前に - が付いている用語のみを含むブール モードの検索では、空の結果が返されます。「除外された用語を含む行を除くすべての行」は返されません。</p>
したがって、クエリに追加して、クエリOR 1 = 1
が MATCH 演算子なしですべてのレコードを返すようにしてください