Sql BigQuery根据(数组中包含的数组)条件连接2个表

Sql BigQuery根据(数组中包含的数组)条件连接2个表,sql,join,google-bigquery,unnest,Sql,Join,Google Bigquery,Unnest,我正在努力实现以下目标。假设我有两张桌子: WITH table_1 as ( SELECT * FROM UNNEST([ STRUCT([1] as A, [2,3,4] as B), STRUCT([2],[6,7]) ]) ) 表2: WITH example as ( SELECT * FROM UNNEST([ STRUCT([1,2] as C, [77] as D), STRUCT([3,4],[88]), STRUCT([4],[99]) ])

我正在努力实现以下目标。假设我有两张桌子:

WITH table_1 as (
SELECT
* FROM UNNEST([
  STRUCT([1] as A, [2,3,4] as B),
  STRUCT([2],[6,7])
  ])
)

表2:

WITH example as (
SELECT
* FROM UNNEST([
  STRUCT([1,2] as C, [77] as D),
  STRUCT([3,4],[88]),
  STRUCT([4],[99])
  ])
)

我想根据以下条件合并表_1和表_2,条件是C的所有值都必须在B中:

从表_1中选择A、C、D,然后将表_2左键连接到B中包含的C上

这将导致下表:

我的问题是是否/如何可能得到期望的结果。我无法为两个数组编写包含在语句中的
,作为
左连接
语句的条件。另外一个要求是表1包含1亿行,表2包含2.5万行。因此,解决方案必须是有效的。我知道这增加了问题的难度…:P

非常感谢您的帮助

WITH table_1 as (
SELECT
* FROM UNNEST([
  STRUCT([1] as A, [2,3,4] as B),
  STRUCT([2],[6,7])
  ])
),
table_2 as (
SELECT
* FROM UNNEST([
  STRUCT([1,2] as C, [77] as D),
  STRUCT([3,4],[88]),
  STRUCT([4],[99])
  ])
)

SELECT table_1.A, table_2.C, table_2.D
FROM table_1 , table_2 , UNNEST([
                      (SELECT ARRAY_LENGTH(table_2.C) - COUNT(1) 
                      FROM UNNEST(table_2.C) AS col_c 
                      JOIN UNNEST(table_1.B)  AS col_b 
                      ON col_c = col_b)]) AS x
WHERE x = 0
这将产生所需的输出