平时一般的错误:
如果 join了两个表,两个表同时含有一个某列col1,但没有指定col1的表名,如下
select col1,col2 from a left join b on a.col1=b.col1 where col1>1
会出现如下错误:
SemanticException Column col1 Found in more than One Tables/Subqueries
然后,某一天碰到了错误ambiguous column name,跟上面的有点类似,肯定是列名有重复,但是问题在哪里呢?
实际上,我在写SQL的时候需要所有列,于是写了个*,一般很少使用*,所以只顾着前面的计算列中使用了a.col1,忘记给*加上表名,结果就报ambiguous column name错误
最后改成a.*,b的非col1列挨个写上,如下
select 一堆计算列,a.*,b.col2,c.col3,.... from a left join b on a.col1=b.col1 where col1>1