在 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”
我哪里出错了?
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
。