首页 > 解决方案 > bigquery MERGE DML 与相关子查询

问题描述

是否可以在 bigQuery 中使用 MERGE DML 进行相关查询(MERGE 中的 WHEN 子句之一内的子查询)?

例如,请参阅我在谷歌搜索“源删除时不匹配时合并”的改编查询。注意 WHEN 子句中的两个 SELECTS:

MERGE Target1 AS T
USING Source1 AS S
ON (T.label_id = S.label_id) 
WHEN NOT MATCHED BY TARGET AND S.project_name IN (SELECT DISTINCT(project_name) FROM Source1) 
    THEN INSERT(attr1, attr2) VALUES(S.attr1, S.attr2)
WHEN MATCHED 
    THEN UPDATE SET T.attr1 = S.attr1
WHEN NOT MATCHED BY SOURCE AND T.project_name IN (SELECT DISTINCT(project_name) FROM Source1)
    THEN DELETE  ;

如何在 bigQuery 中做到这一点?它需要从我上面的查询中修改吗?我目前得到一个: Correlated subquery is unsupported in WHEN clause.

标签: google-bigquery

解决方案


遗憾的是, BigQuery中的 MERGE 语句不支持WHEN 子句中的子查询。

有一个具有类似场景的功能请求和可能对您有帮助的解决方法。


推荐阅读