0

我试过了

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;

我搜索了狮身人面像官方文件,其中说:

WHERE 子句。该子句将映射到全文查询和过滤器。比较运算符(=、!=、<、>、<=、>=)、IN、AND、NOT 和 BETWEEN 都受支持并直接映射到过滤器。OR 尚不支持,但将来会支持。支持 MATCH('query') 并映射到全文查询。

但它没有关于 NOT BETWEEN 的例子。谁能告诉我 sphinxql 是否支持 NOT BETWEEN?如果如果支持,正确的语法是什么?

4

1 回答 1

1

不,不NOT BETWEEN。有一个NOT IN()运算符,在这种特定情况下可能会有所帮助

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

(长距离会很麻烦)

这有点令人费解,但可以做到

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 

更清晰。颠倒逻辑。

(空的 match() 什么都不做,可以省略)

于 2017-06-13T11:49:48.310 回答