如何在Cosmos DB中投影静态表并使用Not In子句查询缺失ID
Cosmos DB 查询:从静态数据集中筛选未存在于现有集合的ID
对应查询语句(NOT IN 写法)
SELECT t.id FROM ( SELECT "1" AS id UNION ALL SELECT "2" AS id UNION ALL SELECT "3" AS id UNION ALL SELECT "4" AS id ) t WHERE t.id NOT IN ( SELECT c.id FROM c c )
备选写法(LEFT JOIN 方式)
如果偏好连接逻辑实现,也可以采用左连接筛选无匹配项的方式:
SELECT t.id FROM ( SELECT "1" AS id UNION ALL SELECT "2" AS id UNION ALL SELECT "3" AS id UNION ALL SELECT "4" AS id ) t LEFT JOIN c c ON t.id = c.id WHERE c.id IS NULL
说明与验证
- 静态数据集
t通过UNION ALL拼接多个SELECT语句构造,完全匹配你提供的静态数据结构。 - 子查询
SELECT c.id FROM c c会从Cosmos DB现有集合c中提取所有已存在的ID。 - 当集合
c的示例数据为[{"id":"1"},{"id":"2"}]时,执行上述任一查询,都会返回期望结果:[ { "id": "3" }, { "id": "4" } ]
注意事项
Cosmos DB对字段名大小写敏感,务必确保查询中使用的字段名(如id)与集合c中的实际字段名完全一致,避免因大小写不匹配导致筛选错误。
内容的提问来源于stack exchange,提问作者Venkatesh Muniyandi
相关产品推荐
相关产品推荐

