2014-11-01 63 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