dde-demo-d001.sap_crm.transactions_bkup
UPDATE `dde-demo-d001.sap_crm.documents_bkup` DFR
SET case_guid = ICT.case_guid
FROM (SELECT transaction_header_guid,case_guid FROM `dde-demo-d001.sap_crm.transactions_bkup`) ICT
WHERE (DFR.case_guid IS NULL) and (DFR.transaction_header_guid = ICT.transaction_header_guid);
sumquery带有内在联接失败00505693-5CD8-1EEF-92DF-8D9FF1D25CAB | |
null | |
UPDATE `dde-demo-d001.sap_crm.documents_bkup`
SET case_guid = ICT.case_guid
FROM `dde-demo-d001.sap_crm.documents_bkup` DFR
INNER JOIN `dde-demo-d001.sap_crm.transactions_bkup` ICT
ON DFR.transaction_header_guid = ICT.transaction_header_guid
WHERE DFR.case_guid IS NULL;
| Query |
UPDATE/MERGE must match at most one source row for each target row
Query带有子查询传递更新5行。
我不明白为什么内部联接失败,因为即将发生的联接的列具有不同的值?同样,子查询也是相同的逻辑及其通过的方式?
问题的原因是,当您的第一个查询中您的内部加入在第一个查询中试图在
UPDATE/MERGE must match at most one source row for each target row
中更新
documents\_bkup
中的行,具体取决于
transactions\_bkup
时。由于内部连接返回了两个表中的所有匹配行,因此Update语句尚不清楚,如果来自
transaction\_header\_guid
的A
case\_guid
出现在
transaction\_header\_guid
documents\_bkup
,则使用各种
transactions\_bkup
值。由于这种模棱两可,BigQuery会引发错误。有关更多信息,请参阅此文档。
在JOIN子句中使用汇总函数为每个Transaction_header_guid选择单个case_guid可能是成功使用内部加入(例如Min(case_guid),max(case_guid))的单个case_guid,并且还请参阅此stacklink1
,link2。