6

次のクエリは、IN 演算子のみが使用されている場合に問題なく動作します
SELECT META().id FROM bucket_name WHERE description IN ['Item1','Item2']

しかし、このクエリを起動すると、空白の結果が返されます
SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']

私は何か間違ったことをしていますか、それとも他の誰かが同じ問題に直面していますか?

4

2 に答える 2

7

それを機能させるには、「IN」条件を括弧で囲む必要があると思います:

SELECT META().id FROM bucket_name WHERE id = 123 AND (description IN ['Item1','Item2'])

これは、N1QLプロセッサによる演算子評価の優先レベルに関係しています。

EXPLAINキーワードを指定して実行すると、条件が互いにどのようにリンクされているかが表示されます。

例えば

explain SELECT META().id FROM bucket_name WHERE id = 123 AND (description IN ['Item1','Item2'])

explain SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']
于 2014-11-07T19:32:01.697 に答える
4

最新の N1QL デベロッパー プレビュー ( http://docs.couchbase.com/developer/n1ql-dp3/n1ql-intro.html ) では、IN 句を括弧で囲む必要がないため、次のように動作します。

SELECT META(b).id FROM bucket_name b WHERE id = 123 AND description IN ['Item1','Item2']

バケット名 (またはエイリアス) を META() に渡す必要があるのは、N1QL が複数のバケットに対するクエリをサポートするようになったためだと思います。

于 2015-02-02T14:53:25.340 に答える