为什么这个 CosmosDB 子查询会失败?

时间:2021-01-24 07:35:29

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我正在尝试使用一个简单的子查询来获取一个值,但我收到关于基数的错误

查询如下:

SELECT va.variantId AS ItemNo,
       c.Season,
       SUBSTRING(va.variantId, 0, 7) AS ProductNo,
       SUBSTRING(va.variantId, 0, 10) AS ArticleNo, 
       SUBSTRING(va.variantId, 0, 13) AS VariantNo,
       (
        SELECT VALUE p["value"]
        FROM c
        JOIN p IN c.OriginalData.presentation.productNameLong
        WHERE c.ItemNo = '123456'
        AND p.locale = 'en-GB'
        AND c.Season = '201808'
        AND c.brand = 'xxx'
        ) AS Title
FROM c
JOIN sm IN c.OriginalData.base.sales.summary.salesMarkets
JOIN ar IN sm.articles
JOIN va IN ar.variants
JOIN ch IN va.channels
WHERE c.ItemNo = '123456'
AND sm.salesMarket = 'SE'
AND ch.channelName = 'xxx'

错误如下:

Failed to query item for container rawdata:
 Gateway Failed to Retrieve Query Plan: Message: {"errors":[{"severity":"Error","location":{"start":227,"end":498},"code":"SC2201","message":"The cardinality of a scalar subquery result set cannot be greater than one."}]}
ActivityId: 11ff3b08-d8a7-4737-9111-81f319cf1dc5, Microsoft.Azure.Documents.Common/2.11.0, Microsoft.Azure.Documents.Common/2.11.0

该子查询的结果只能是 1 个单一结果,所以我不确定它在抱怨什么

1 个答案:

答案 0 :(得分:0)

您需要使用 ARRAY 表达式根据子查询的结果构造一个数组。

请试试这个 SQL:

alGetError()
相关问题