Cosmos DB 的所有文档,看起来它只支持 JOIN
关键字,这似乎是一种 INNER JOIN
。
我有以下查询:
SELECT * FROM
(
SELECT
DISTINCT(c.id),
c.OtherCollection,
FROM c
JOIN s IN c.OtherCollection
)
AS c order by c.id
这工作正常并返回已填充 OtherCollection
的文档的数据。但它显然不会返回任何未填充的文档。
连接的原因是有时我会执行以下查询(查询是根据用户输入构建的)
SELECT * FROM
(
SELECT
DISTINCT(c.id),
c.OtherCollection,
FROM c
JOIN s IN c.OtherCollection
WHERE s.PropertyName = 'SomeValue'
)
AS c order by c.id
问题是在这种情况下如何使用 LEFT JOIN
运算符?
最佳答案
您可以使用EXISTS语句模拟LEFT JOIN。 例如:
SELECT VALUE c
FROM c
WHERE (
(c.OtherCollection = null) OR EXISTS (--Like a "Left Join"
SELECT null
FROM s IN c.OtherCollection
WHERE s.PropertyName = 'SomeValue'
)
)
--AND/OR Some other c Node conditions
order by c.id
关于azure - Cosmos DB 左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57463395/