使用create table作为select时避免重复列名

p8ekf7hl  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(493)

我正在尝试创建一个表,使用createtable作为select语句。在select语句中,当前有许多表(超过10个)上的连接。

CREATE TABLE table_name AS 
    SELECT 
     * 
    FROM 
     table_x x
    LEFT JOIN 
     table_y y
     on x.id=y.fid 
    LEFT JOIN
     table_z z
     on x.id=z.fid
    ...
    ...
    ...

由于许多表共享列名(虽然不是数据),我得到了一个重复的列名错误。
我想知道是否有一个懒散的方法来生成列名,所以没有冲突。例如在上面的例子中, table_y 以及 table_z 两者都有称为 fid .
我想知道是否有一种方法可以生成名为 y.id 以及 z.id ,或类似的东西(例如。 y_id , z_id )而不仅仅是 id 以及 id 在新table上?
我希望避免编写一个查询,在那里我必须明确地写出select中的所有列,而我们 AS 声明如下:

CREATE TABLE table_name AS 
    SELECT 
     x.id as x_id,
     y.fid as y_fid,
     z.fid as z_fid,
     ...
     ...
     ...
    FROM 
     table_x x
    LEFT JOIN 
     table_y y
     on x.id=y.fid 
    LEFT JOIN
     table_z z
     on x.id=z.fid
    ...
    ...
    ...
z2acfund

z2acfund1#

也许,我遗漏了一些东西,但是为什么要选择基本上具有相同值的列呢?
而不是:

SELECT x.id as x_id, y.fid as y_fid, z.fid as z_fid, . . .

为什么不呢?

SELECT x.id as x_id, . . .

你为什么要 NULL 价值观?我可以想象标志是否真的发生了匹配,但是没有理由仅仅因为它们在那里就包含所有列。

相关问题