2017-06-13 9 views
0

私はsphinxqlは 'not between'をサポートしていますか?

SELECT count(*) as count FROM rt_item WHERE MATCH('') AND sale between 1 and 2; 

を試してみましたが、多くの行を得ました。 しかし、スフィンクス

ERROR 1064 (42000): sphinxql: syntax error, unexpected BETWEEN, expecting IN near 'between 1 and 2' 

を文句を言う私は

SELECT count(*) as count FROM rt_item WHERE MATCH('') AND sale not between 1 and 2; 

をしようとしたときに、私が言うスフィンクス公式文書、検索:

句を。この句は、フルテキストクエリとフィルタの両方に対応します。比較演算子(=、!=、<、>、< =、> =)、IN、AND、NOT、およびBETWEENはすべてサポートされ、フィルタに直接マップされます。 ORはまだサポートされていませんが、将来的にはサポートされます。 MATCH( 'query')はサポートされており、フルテキストクエリに対応しています。

しかし、どちらもNOT NOT BETWEENです。 誰でも私にsphinxqlのサポートができないのかどうか教えていただけますか?サポートされている場合は、正しい文法は何ですか?

+0

「販売」のタイプは何ですか? – hank

+0

販売は単なる例のdb列です。 – chariothy

答えて

1

いいえ、いいえNOT BETWEEN。この特定のケース

SELECT count(*) as count FROM rt_item WHERE MATCH('') AND sale not in (1,2); 

に役立つかもしれないNOT IN()オペレータは、

(ロングレンジで面倒な取得)がありそれは少し複雑ですが、仮想属性を作成します

SELECT count(*) as count,sale>=1 AND sale<=2 AS f FROM rt_item WHERE f=0 

を行うことができます「間」を真似してから、偽をチェックしてください。

SELECT count(*) as count,sale < 1 OR sale > 2 AS f FROM rt_item WHERE f=1 

明確かもしれません。ロジックを反転します。

(空の照合()は何もしません)

+0

ありがとう!私を混乱させたのは、mysqlではサポートされているが、floatカラムではNOT BETWEENやINなどのスフィンクスではサポートされていない演算子があることです。したがって、一般的なクエリメソッドを書くのは難しいです。 – chariothy

+0

はい、mysqlとsphinxは非常に異なるものです。彼らは非常に異なる能力を持っています。一般的には、別々の機能が必要です。 – barryhunter

関連する問題