首页 > 解决方案 > 在保持顺序的同时用新元素更新结构数组

问题描述

我有一列,比如说arr,这是一个结构数组,所以是这样的:

[STRUCT('foo' as name, 1 as t), STRUCT('bar' as name, 3 as t)]

我正在运行一个合并语句,我想arr使用新元素进行更新,但保持排序顺序为t.

我的尝试是取消嵌套 source 和 target arr,对其进行排序,然后ARRAY_AGG将结构返回。所以是这样的:

WHEN MATCHED THEN UPDATE SET
target.arr = ARRAY(SELECT AS STRUCT * FROM UNNEST(ARRAY_CONCAT(target.arr, source.arr)) ORDER BY timestamp ASC)

但这给出了错误Unexpected keyword SELECT

不知道出了什么问题。仅仅是MERGE声明吗?


编辑:我得到的错误实际上是Correlated Subquery is unsupported in UPDATE clause

标签: google-bigquery

解决方案


对于任何寻找答案的人。BigQuery 目前不支持UPDATEorWHEN语句中的子查询。


推荐阅读