使用行编号()删除重复行

lndjwyie  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(267)

如何使用row\ u number()删除重复项,而不列出表中的所有列。我有一个50多列的配置单元表。如果我想删除重复的2列的基础上,下面是我遵循的步骤
创建临时表为
Create temptable as select * from (select *,row_number() over(col1,col2) as rn from maintable) where rn=1) Insert overwrite table maintable select * from temptable 但是在insert中它失败了,因为新列 rn 存在于诱惑之中;为了避免出现这个列,我必须列出所有其他列。
配置单元中没有drop column选项。您还需要使用replace函数,它需要再次列出所有其余的列。
那么,有没有更好的办法在基于2列的配置单元中删除重复项呢?

bq3bfh9z

bq3bfh9z1#

拼出原始表中的所有列名 insert overwrite 当查询计算新列时。不需要临时表。

Insert overwrite table maintable 
select col1,col2,col3 ---...col50 
from (select t.*
            ,row_number() over(order by col1,col2) as rn 
      from maintable
     ) t
where rn = 1

相关问题