使用create table作为select

时间:2017-07-13 10:02:10

标签: sql hive create-table

我目前正在尝试使用CREATE Table AS 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_ytable_z都有名为fid的列。

我想知道是否有办法生成名为y.idz.id的列,或类似的内容(例如y_idz_id),而不仅仅是{{1新表中的}和id

我想避免编写一个查询,我必须明确写出select中的所有列,并使用id语句,如下所示:

AS

1 个答案:

答案 0 :(得分:-1)

也许,我错过了一些东西,但为什么要选择基本上具有相同值的列呢?

而不是:

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

为什么不呢?

SELECT x.id as x_id, . . .

您是否有理由想要NULL值?我可以想象指示匹配是否实际发生的标志,但没有理由将所有列包括在内,因为它们就在那里。