将Postgre查询转换为Hive / Mysql

问题描述

我有这张桌子:

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

通过这种方法,您不需要子查询。