【发布时间】:2019-02-22 08:41:31
【问题描述】:
我正在尝试加入 hive 中的多个表,它们有一个公共键 col
create table merged_table as
select a.*,b.*,c.* from table1 a
join table 2 b
on a.col = b.col
join table3 c
on c.col = d.col
但这会产生以下错误:
失败:SemanticException [错误 10036]:列名重复:col
这些表有很多列。有什么方法可以在不显式写入查询中的列名的情况下做到这一点?
【问题讨论】:
-
您需要在选择中重命名
col列,因为select a.*,b.*,c.*将产生三个名称为col的列,这就是您收到Duplicate column name: col错误的原因。例如select a.col as col_a, b.col as col_b等 -
这似乎是一个 SQL 问题,而不是 HQL 问题。注意 hql 代表 Hibernate Query Language,而不是 Hive Query Language
-
@serge_k 那么这行得通吗
select a.col as col_a, b.col as col_b, c.col as col_c, a.*, b.*, c.*?或者你的意思是说我必须明确指定所有列都需要什么? -
@LukasEder 好的
-
@prashanth 您的选择也不起作用,您需要明确指定所有列。或者您可以使用正则表达式选择列,即从任一表中选择除
col和col之外的所有列,请参阅stackoverflow.com/questions/33633071/…