当仅使用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']
我做错了什么或其他人遇到过同样的问题?
答案 0 :(得分:6)
我认为你必须将你的“IN”条件纳入括号才能使其有效:
SELECT META().id FROM bucket_name WHERE id = 123 AND (description IN ['Item1','Item2'])
它与precedence level of the operators evaluation by N1QL处理器
有关如果您使用EXPLAIN关键字运行它,则会显示它如何将条件相互关联。
e.g。
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']
答案 1 :(得分: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现在支持多个存储桶上的查询。