gpt4 book ai didi

azure - Azure cosmos DB 中的子查询和分组依据

转载 作者:行者123 更新时间:2023-12-03 01:00:16 28 4
gpt4 key购买 nike

我遇到一种情况,我需要根据 GroupBy 子查询获取容器项目。这看起来很简单,但对我来说不起作用。感谢帮助!下面是sql查询

SELECT * FROM my_container 
WHERE my_container.item.Id
IN (SELECT VALUE c.item.Id FROM c WHERE c.item.name = 'ABC'
GROUP BY c.item.Id )

由于格式不正确而出现错误IN('a','b')

我的 my_container 项目类似于:

[
{
item : {
name: "ABC",
id: "1",
address1: "address1",
city: "city1"
},
item : {
name: "ABC",
id: "2",
address1: "address2",
city: "city2"
},
item : {
name: "ABC",
id: "3",
address1: "address3",
city: "city3"
},
}
]

最佳答案

你的子查询结果是一个数组[],但是关键字IN只支持()。我尝试了这个sql:

SELECT * FROM c WHERE ARRAY_CONTAINS((SELECT VALUE c.item.id FROM c WHERE c.item.name = 'ABC' GROUP BY c.item.id),c.item.id,false)

但是它得到0行。原因是ARRAY_CONTAINS()函数不支持子查询作为参数。作为解决方法:你应该使用2个sql来实现目标。

首先,执行sqlSELECT VALUE c.item.id FROM c WHERE c.item.name = 'ABC' GROUP BY c.item.id以获取输出数组[]。

然后,将第一步得到的结果传递给ARRAY_CONTAINS()并执行以下sql

SELECT * FROM c WHERE ARRAY_CONTAINS(['1','2','3'],c.item.id,false)

顺便说一句,cosmos db 中的子查询与关系型数据库不同。了解更多关于子查询的信息,请引用此 document .

关于azure - Azure cosmos DB 中的子查询和分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61683620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com