You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Cosmos DB SQL API如何实现LEFT JOIN以包含无地址人员

在Azure Cosmos DB SQL API中实现LEFT JOIN以包含无地址的联系人

先直接给你能满足需求的查询语句:

SELECT base.FirstName, base.LastName, Address.City
FROM ContactPerson base
LEFT JOIN Address IN (IS_DEFINED(base.Address) ? base.Address : [])

为什么原来的查询没达到效果?

你之前用的JOIN其实是内连接(INNER JOIN),它只会返回左右两边都有匹配数据的记录。也就是说,只有当ContactPerson文档存在Address数组时,才会生成对应的输出行,没有Address属性的文档直接被过滤掉了,这就是Jayanth的记录没出现在结果里的原因。

这个解决方案的逻辑是什么?

  • 我们用LEFT JOIN替代普通JOIN,它会保留左表(也就是ContactPerson集合里的所有文档),不管右表(Address数组)有没有匹配项。
  • 用IS_DEFINED(base.Address) ? base.Address : []做了一个兜底判断:如果文档存在Address属性,就用这个数组做连接;如果不存在,就用一个空数组来做连接。这样即使没有地址的文档,也会生成一条对应的空连接记录,最终保留该联系人的基本信息。

执行结果验证

运行上面的查询后,你会得到完全符合期望的输出:

[
  { "FirstName": "Saravana", "LastName": "Kumar", "City": "aaaa" },
  { "FirstName": "Saravana", "LastName": "Kumar", "City": "bbbb" },
  { "FirstName": "Jayanth", "LastName": "T" }
]

内容的提问来源于stack exchange,提问作者Saravana Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:01:14