2015-09-04 82 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 *表示为文档而不是单独的表头和行表 –

相关问题