BigQuery - 使用 Left Join 和 Cast 函数更新表(语法错误:意外的关键字 CAST)

问题描述 投票:0回答:1

在 BigQuery 中,我尝试从另一个具有列“SB”的表 t2 更新表 t1 中具有所有空值的列“PSB”。问题出在进行左连接时的关键数据字段。表t1中key的数据类型是String,表t2中key的数据类型是Integer。 表1键名称:'PC' 表2键名称:'art'

我正在使用以下代码:

UPDATE table1 t1
SET PSB = IFNULL(sb, null)
FROM (
  SELECT cast(a.PC as INT64), b.art, b.sb
  FROM table1 a
  LEFT JOIN table2 b
  on cast(a.PC as INT64) = b.art
) t2
WHERE t1.(cast(a.PC as INT64)) = t2.art

我收到以下错误: “语法错误:意外的关键字 CAST”

我哪里出错了?

string google-bigquery casting left-join int64
1个回答
0
投票

WHERE
子句中的语法已关闭,
CAST
应包含整个表达式。试试这个版本:

UPDATE table1 t1
SET PSB = IFNULL(sb, NULL)
FROM
(
    SELECT b.art, b.sb
    FROM table1 a
    LEFT JOIN table2 b
        ON CAST(a.PC AS INT64) = b.art
) t2
WHERE CAST(t1.PC AS INT64) = t2.art;

此外,目前的

WHERE
条款:

其中 t1.(cast(a.PC as INT64)) = t2.art

没有意义,因为它应该关联连接中涉及的两个表。 LHS 应该指的是外部查询中的

table1

© www.soinside.com 2019 - 2024. All rights reserved.