假设有如下数据:
1,zhang,father:zhanglaoge#monther:xiaolaomei#brother:superman,22
则建表语句应该如下:
create table t_person(id int,name string,family_members map<string,string>,age int)
row format delimited fields terminated by ','
collection items terminated by '#'
map keys terminated by ':';
查每个人的father
select id,name,family_members["father"],age from t_person;
查出每个人有哪些亲属关系:
select id,name,map_keys(family_members) as relations,age from t_family;
查出每个亲属的名字:
select id,name,map_values(family_members) as relations,age from t_family;
查出亲属的数量:
select id,name,size(family_members) as relations,age from t_family;
查出所有拥有brother的人:
方案一:
select id,name,age,family_members[brother] from t_family where array_contains(map_keys(family_members),'brother');
方案二:
子查询
select id,name,age
from
(select id name,age,map_keys(family_members) as relations from t_family) tmp where arrays_contains(relations,'brother')