2017-06-13 1 views
0

J'ai essayéEst-ce que sphinxql soutient «pas entre»?

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

et a obtenu de nombreuses lignes. Mais sphynx se plaint

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

quand j'ai essayé

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

Je recherché le document officiel Sphinx, qui dit:

clause WHERE. Cette clause va correspondre à la fois à la requête fulltext et aux filtres. Les opérateurs de comparaison (=,! =, <,>, < =,> =), IN, AND, NOT et BETWEEN sont tous pris en charge et mappés directement aux filtres. OR n'est pas encore supporté mais sera dans le futur. MATCH ('query') est pris en charge et correspond à une requête fulltext.

Mais il n'a pas d'exemple sur NOT BETWEEN. Quelqu'un peut-il me dire si le soutien sphinxql PAS ENTRE? Si c'est le cas, quelle est la grammaire correcte?

+0

Quel est le type de 'sale'? – hank

+0

La vente est juste un exemple de colonne db. – chariothy

Répondre

1

Non, non NOT BETWEEN. Il y a un opérateur NOT IN(), ce qui pourrait aider dans ce cas précis

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

(devient lourd avec de longues plages)

Il est un peu alambiquée, mais peut faire

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

Créer un attribut virtuel imiter un 'entre', puis vérifier juste pour faux.

Pourraient trouver

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

plus claire. Inverse la logique.

(vide match() ne fait rien, peut être omis)

+0

Merci! Ce qui m'a troublé, c'est que certains opérateurs sont supportés dans mysql mais pas dans sphinx, comme NOT BETWEEN et IN avec une colonne float. Il est donc difficile d'écrire une méthode de requête générale. – chariothy

+0

Eh bien oui, mysql et sphinx sont des choses très différentes. Ils ont des capacités très différentes. En général, il faudrait des fonctions séparées. – barryhunter