问题描述
我有这张桌子:
CREATE TABLE football_teams ( player_id text,name text,team text
);
INSERT INTO football_teams
VALUES
('010','Messi','Barcelona'),('007','Sancho','Dortmund'),('011','Werner','Chelsea'),('001','De Gea','Manchester United'),('009','Lewandowski','Bayern Munich'),('006','Pogba',('017','De Bruyne','Manchester City'),('029','Harvertz','Bayer Leverkusen'),'Liverpool'),('005','Upamecano','Leipzig'),('010',('014','Aubameyang','Arsenal');
我想让每个足球运动员在一张新桌子上只出现一次的情况。例如,梅西出现过两次,但我想在新表中使用任何出现的梅西。 我不确定如何将其转换为Hive或MysqL。这就是我想要的预期结果:
player_id name team
010 Messi Barcelona
007 Sancho Dortmund
011 Werner Chelsea
001 De Gea Manchester United
009 Lewandowski Bayern Munich
006 Pogba Manchester United
017 De Bruyne Manchester City
029 Harvertz Bayer Leverkusen
005 Upamecano Leipzig
014 Aubameyang Arsenal
解决方法
一个选项可能正在使用row_number()
select * from
(
select *,row_number() over(partition by name order by cast(player_id as int)) as rn
from tablename
)A where rn=1
,
如果要避免窗口功能,也可以执行-
[root@c3-bl460g9-81 machine]# var2=abc!$123
var2=abcvar1=value123
通过这种方法,您不需要子查询。