Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 配置单元:使用同一键连接多个表_Sql_Hive - Fatal编程技术网

Sql 配置单元:使用同一键连接多个表

Sql 配置单元:使用同一键连接多个表,sql,hive,Sql,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

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


这些表有许多列。是否有任何方法可以在不显式写入查询中的列名的情况下完成此操作?

您无法创建具有重复列名的表。虽然在SQL顶级
SELECT
语句中可能会产生不明确/重复的列名,但此类查询不能在
CREATE TABLE中用作SELECT
。您应该重命名每个单独的列名,可能在它们前面加上源表名:

create table merged_table as
select a.col1 as a_col1, a.col2 as a_col2, ..., b.col1 as b_col1, ...
from table1 a
join table2 b on a.col = b.col
join table3 c on b.col = c.col

您需要重命名select as中的
col
select a.*,b.*,c.*
将生成三个名为
col
的列,这就是您收到
重复列名的原因:col
错误。例如
选择a.col作为col_a,b.col作为col_b
等等。这似乎是一个SQL问题,而不是HQL问题。注意,它代表Hibernate查询语言,而不是Hive查询Language@serge_k因此,这项工作将
选择a.col作为col_a,b.col作为col_b,c.col作为col_c,a.*,b.*,c.
?或者你的意思是说我必须明确指定需要哪些列?@LukasEderokay@prashanth您的选择也不起作用,您需要显式指定所有列。或者,您可以使用正则表达式选择列,即从任一表中选择除
col
plus
col
之外的所有列,请参见