SQL-如何克隆行,仅更改一个字段?

问题描述 投票:2回答:1

我正在将SQL与pyspark和hive一起使用,而我对这一切都是新手。我有一个我不知道如何解决的问题。

如果我有一个表“ People”,就像这样:

id |  name   | other_names
1  |  Alice  | Sarah;Tom
2  |  Bob    | Jane;Michael;Ben
3  | Lizzie  | John

“ other_names”列中的名称数是可变的。可以是1,2,3,....

我想创建一个查询来获得这个:

id   |  name
1    |  Alice
1    |  Sarah
1    |  Tom
2    |  Bob 
2    |  Jane
2    |  Michael
2    |  Ben
3    |  Lizzie
3    |  John

是否有不太复杂的方法?

非常感谢您,并祝您编码愉快:D

sql csv hive pyspark-sql
1个回答
0
投票

要将csv字符串拆分为行,您可以进行横向连接并使用split()explode()

select t.id, n.other_name
from mytable t
lateral view explode(split(t.other_names, ';')) n as other_name

如果您还想要主要名称:

select id, name from mytable
union all
select t.id, n.other_name
from mytable t
lateral view explode(split(t.other_names, ';')) n as other_name
© www.soinside.com 2019 - 2024. All rights reserved.