您如何 return table 中的每条记录作为单个串联字符串,其中至少包含不同 table 中每条记录的 4 个值中的 1 个?

How do you return each record in a table as a single concatenated string that contains at least 1 of 4 values for each record in a different table?

我有一个 table 有 92k 条记录,只有一列,包含关于线索的注释。

我还有另一个 table,有 32k 条潜在客户记录,其中有 3 phone 列和一个电子邮件列。

我想查询 92k 条记录以查看它们是否包含任何号码或电子邮件,然后连接所有这些记录并将连接后的字符串设置为 32k table 的注释列的值。

我创建了一个可以使用的电子表格,但它已经处理了几个小时而且只处理了一半。 enter image description here

=IFERROR(ifs(
not(isblank(H30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&H30627&"'",0)),
not(isblank(F30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&F30627&"'",0)),
not(isblank(E30627)),JOIN(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&E30627&"'",0)),
not(isblank(D30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&D30627&"'",0))),"")

我觉得 Bigquery 会节省很多时间,但我是一个 SQL 菜鸟,这会返回一个左外连接错误,但没有 STRING_AGG 和 0 个修改行。

#standardSQL
UPDATE sfdc.workingFin
SET Notes = (SELECT STRING_AGG(string_field_0) from sfdc.tasks where 
string_field_0 LIKE (SELECT Email from sfdc.workingFin))
WHERE TRUE

您可以使用相关子查询:

UPDATE sfdc.workingFin wf
    SET Notes = (SELECT STRING_AGG(string_field_0) 
                 FROM sfdc.tasks t 
                 WHERE t.string_field_0 LIKE wf.Email
                )
    WHERE true;