我从BQ收到一个奇怪的错误(也许是我第一次收到此错误)。
No matching signature for operator = for argument types: INT64, STRING. Supported signatures: ANY = ANY at [27:1]
查询:
SELECT col1
,col2
,col3
FROM tbl1
JOIN t2 ON t1.id = t2.id
JOIN t3 on t2.id = t3.id
JOIN t4 on t4.id = t1.id
错误行JOIN t2.id = t3.id
t2.id 显示此错误。
它是一个整数列。
答案 0 :(得分:2)
您的比较之一是混合类型。这是一个坏主意-如错误消息所示。您需要找出哪些对,然后执行以下操作之一:
cast(t2.id as string) = t3.id
t2.id = safe.cast(t3.id as int64)
答案 1 :(得分:-1)
在查询中,您使用t2
表创建了联接,但是在联接中未给出t3
和t4
表名。以下是正确的查询。
SELECT col1
,col2
,col3
FROM tbl1 as t1
JOIN t2 ON t1.id = t2.id
JOIN t3 ON t2.id = t3.id
JOIN t4 ON t4.id = t1.id
尝试一下。我认为这会起作用。
编辑后
您需要在某些字段中为表名加上字段,例如
select
t1.field1,
t2.field1,
t3.field3,
t4.field
From tbl1 as t1
JOIN t2 ON t1.id = t2.id
JOIN t3 ON t2.id = t3.id
JOIN t4 ON t4.id = t1.id