2015-09-04 79 views
4

我有這個下面簡單的SQL凡在我試圖在DocumentDB,但我不能讓它在查詢瀏覽器工作:是否可以在DocumentDB中查詢Sql Server中的「Where In」?

SELECT * FROM root.DocumentDbTest_AllFieldTypes f 
    WHERE f.field1 NOT IN (
          SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g 
          WHERE g.time = "09:12:34" 
         ); 

我得到這個以下錯誤: Syntax error, incorrect syntax near 'SELECT'.

燦有人請告訴我正確的語法可能是爲了做這個IN查詢嗎?

+0

這裏是教程,也許它會幫助https://azure.microsoft.com/en-us/documentation/articles/documentdb-sql-query/ – wudzik

+0

你需要這個查詢的'在'子句嗎? – Ric

+1

你在做什麼是一個關係連接。 DocumentDB提供了一個'IN'運算符,但只是在您試圖在文檔之間執行JOIN時檢查值列表。這不是*文檔數據庫的典型場景。實際上,JOIN操作符僅支持* intra-document *連接,即在同一文檔內部連接以提取子節點。 –

回答

0

文檔在WHERE子句中支持IN運算符;但它不支持子選擇。

換句話說...這是支持:

SELECT food.id, 
     food.description, 
     food.tags, 
     food.foodGroup, 
     food.version 
FROM food 
WHERE food.foodGroup IN ("Poultry Products", 
         "Sausages and Luncheon Meats") 

這是不支持:

SELECT * 
FROM root.DocumentDbTest_AllFieldTypes f 
WHERE f.field1 NOT IN 
    (SELECT g.field1 
    FROM root.DocumentDbTest_AllFieldTypes g 
    WHERE g.time = "09:12:34"); 

如果你想看到在DocumentDB子查詢,請通過投票表達您的意見對於DocumentDB's feedback page上的此功能。

+0

嗨@aliuy謝謝你的回覆 - 我害怕 這個限制實際上使得它非常難(幾乎不可能!!),然後在我們的業務場景中實現DocDB ..... :( – Deb

+0

@Deb恰恰相反 - 實際上文檔(或文檔)數據庫這是一個*不同的*模型,需要一個*不同的*設計,有人可能會爭辯說,將* order *表示爲文檔而不是單獨的表頭和行表 –

相關問題