在BigQuery中,如果你想要在两个源表之间执行左外部连接查询并返回匹配的单行,你可以使用JOIN
语句并结合GROUP BY
和ARRAY_AGG
函数来实现
假设你有两个表:table1
和 table2
,它们都有一个共同的字段 id
。你想要返回 table1
中的每一行,以及与之匹配的 table2
中的单行。
SELECT
t1.*,
ARRAY_AGG(t2.some_column LIMIT 1)[OFFSET(0)] AS matched_column
FROM
`your_dataset.table1` t1
LEFT JOIN
`your_dataset.table2` t2
ON
t1.id = t2.id
GROUP BY
t1.id,
t1.column1,
t1.column2,
...
在这个查询中:
t1.*
表示选择 table1
中的所有列。ARRAY_AGG(t2.some_column LIMIT 1)[OFFSET(0)]
表示从 table2
中选择与 table1
匹配的单行,并将其聚合为一个数组。LIMIT 1
确保只选择一个匹配的行,[OFFSET(0)]
用于获取数组中的第一个元素。GROUP BY
子句用于按 table1
中的每一行进行分组,以便为每个组返回一个匹配的行。领取专属 10元无门槛券
手把手带您无忧上云