0

按照在https://cloud.google.com/bigquery/sql-reference/dml-syntax中找到的示例,我们想出了一种方法来更新表的第 3 级(specifications.dimensions),如下所示:

UPDATE sd97dwo.DetailedInventory
SET specifications.dimensions = 
    STRUCT<depth FLOAT64, height FLOAT64, width FLOAT64>(1, 2, 3)
WHERE 
    product like '%washer%'
    AND EXISTS(select 1 from unnest(comments) as c where c.comment like '%comment%')

我们现在要做的是更新表以将记录附加到相同的维度结构。但是,我们尝试的各种方法都没有成功。想看看有没有人有什么想法。我们得到的最接近的是下面,但是当然返回了 specification.dimensions 的所有记录(作为多个结果),所以我们得到错误“标量子查询产生了多个元素”

UPDATE sd97dwo.DetailedInventory
SET specifications.dimensions
    = (SELECT specifications.dimensions
    UNION ALL
    SELECT STRUCT<depth FLOAT64, height FLOAT64, width FLOAT64>(4.0,5.0,6.0))
WHERE 
    product like '%washer%'
    AND EXISTS(select 1 from unnest(comments) as c where c.comment like '%comment%')
4

1 回答 1

3

我们现在要做的是更新表以将记录附加到相同的维度结构。

你的架构是什么?如果您使用与 DML 文档中相同的模式,则“规格”和“尺寸”都不是重复字段。所以你不能附加到它。但是您可以直接更新它们,例如:

UPDATE sd97dwo.DetailedInventory
SET specifications.dimensions.depth = 1,
     specifications.dimensions.height = 2,
     specifications.dimensions.width = 3
WHERE 
    product like '%washer%'
    AND EXISTS(select 1 from unnest(comments) as c where c.comment like '%comment%')
于 2016-09-30T19:49:20.177 回答