首页 > 解决方案 > 当一列不同时如何选择不重复的行?

问题描述

这是我的表,有 4 列:

a b e d
a f c d

我想获取所有第 1 列和第 4 列,以便在示例中将前两行合并为一行,因为它们是相同的:

a d
a d

当我使用命令时:

select column1, column4 from my_table;

这会自动删除重复项吗?如果没有,如何获得只有 1 和 4 列的不同行?

标签: hive

解决方案


有点令人困惑的问题。
您要删除重复数据还是只删除select非重复数据?
如果你想删除重复数据,那么它将是这样的 -

insert overwrite my_table
select * from my_table
join ( 
Select col1||col2||col3||col4 key, row_number() over (partition by col1,col4 order by col1 ) as rn
from my_table) rs on rs.key = col1||col2||col3||col4 and rs.rn=1

如果您想要select唯一的 col1 和 col4 并且不想更改基础数据,您可以简单地触发

select distinct column1, column4 from my_table;

推荐阅读