2014-11-01 44 views
3

下面的查询工作得很好,工作时仅在运算符用于
SELECT META().id FROM bucket_name WHERE description IN ['Item1','Item2']N1ql - > IN操作符不符合其他条件

但是当我火了此查询它给了我一个空白的结果
SELECT META().id FROM bucket_name WHERE id = 123 AND description IN ['Item1','Item2']

我做错了什么或者别人面临同样的问题?

回答

4

我认为你必须把你的“IN”状态进入括号,使其工作:

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

它与precedence level of the operators evaluation by N1QL处理器

做。如果你EXPLAIN关键字它将运行显示它如何将条件相互联系起来。

例如

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

VS

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

它的工作!谢谢! – PratikGandhi 2014-11-08 04:27:42

2

随着最新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现在支持在多个桶上进行查询。

+0

它就像你说的那样工作。谢谢。 – PratikGandhi 2015-02-03 05:54:10