S02016

错误代码

S02016

报错信息

Invalid columns [xxx]. RefId:S02016

错误原因

在标准 SQL 的多表连接语句中,不允许使用逗号(,)表示 cross join / inner join。若使用逗号,它会将 from 子句分割成多个表达式,并按照逗号顺序依次计算这些表达式,然后进行 cross join。这会破坏预期的 join 执行顺序,导致预期在后面执行的 join 被提前执行,进而出现找不到连接列的报错。

解决办法

脚本中使用 CROSS JOIN 语句替换逗号。例如:

t1 = table(1..10 as id, rand(1..10, 10) as val);
t2 = table(1..10 as id, rand(1..10, 10) as val);
t3 = table(1..10 as id, rand(1..10, 10) as val);

// 报错 Syntax Error: [line #1] Invalid columns [t1.id]. RefId:S02016
select * from t1, t3 inner join t2 on t1.id = t2.id;

// 改写后可以执行
select * from t1 cross join t3 inner join t2 on t1.id = t2.id;