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 回答