1

我有一个员工集合,我想检索 10 名员工的完整文档,我想将其 ID 发送到我的 SQL SELECT。我怎么做?

为了进一步澄清,我有 10 个 EmployeeId,我想从我的员工集合中提取这些员工的信息。感谢您对此的帮助。

4

4 回答 4

6

更新:

截至2015年 5 月 6日,DocumentDB 支持IN关键字;最多支持 100 个参数。

例子:

SELECT * 
FROM Employees
WHERE Employees.id IN (
    "01236", "01237", "01263", "06152", "21224",
    "21225", "21226", "21227", "21505", "22903",
    "14003", "14004", "14005", "14006", "14007"
)

原答案:

添加到瑞安的答案......这是一个例子:

创建以下 UDF:

var containsUdf = {
    id: "contains",
    body: function(arr, obj) {
        if (arr.indexOf(obj) > -1) {
            return true;
        }
        return false;
    }
};

使用您的 contains UDF 是一个 SQL 查询:

SELECT * FROM Employees e WHERE contains(["1","2","3","4","5"], e.id)

有关创建 UDF 的文档,请查看DocumentDB SQL 参考

您还可以在DocumentDB 反馈论坛上投票支持为“WHERE”子句实施“IN”关键字。

于 2014-09-03T21:17:16.020 回答
3

您也可以通过使用 OR 支持来实现这一点。下面是一个示例——</p>

SELECT * 
FROM Employees e
WHERE e.EmployeeId = 1 OR e.EmployeeId = 2 OR e.EmployeeId = 3

如果您需要的 OR 数量超过 DocumentDB 的上限,则必须通过employeeId 值将查询分解为多个较小的查询。您还可以从客户端并行发出查询并收集所有结果

于 2014-09-05T04:10:48.493 回答
1

今天最好的方法是创建一个 Contains() UDF,它接收要搜索的 id 数组并在 WHERE 子句中使用它。

于 2014-09-03T19:50:27.423 回答
0

 Select * from Employees where EmployeeId in (1,3,5,6,...) 

不行 ?

感谢 ryancrawcour,我们知道它不会

于 2014-09-03T13:24:36.417 回答