好的,我对SQL很不好。这是我的问题设置。
我有三个表在乎。 表A具有一个字段:ID。这是我关心的少数ID。 表B有几个字段:ID(可以重复)和其他9个字段。
我想汇总表B中的相关ID,并在ARRAY_AGG结构中包含其他9个字段。相关意味着它仅限于表A中的表。请注意,表B很大,因此必须进行汇总才能编写大小合理的结果表。
这可以很容易地通过以下方式完成:
SELECT
a.id,
ARRAY_AGG(STRUCT(
b.sub_id,
b.field1,
b.field2,
b.field3)
) AS b_fields
FROM table_a AS a
JOIN table_b AS b
USING(id);
我的问题如下:请注意,字段之一也是ID。我想在该sub_id上加入另一个表,如下所示:
表C:sub_id,字段0
所以,我最终要进入决赛桌的事情是这样的:
a.id,
ARRAY_AGG(STRUCT(
b.sub_id,
b.field1,
b.field2,
b.field3,
c.field0) as sub_level_info
问题是我不知道如何执行此操作(正如我在SQL中提到的那样)。我不想预先加入表B和表C,因为它很大而且很慢。但是我不知道是否可以将表C的内容添加到表A和表B的联接的输出中。
有人知道如何以最快的方式做到这一点吗?
(供参考,假设表A中有大约25万个id,并且表B和C中有数十亿个元素。)