Hive 在配置单元中获取数据的交集

Hive 在配置单元中获取数据的交集,hive,Hive,我在hive中有以下数据: userid cityid 1 15 2 15 1 7 3 15 2 8 3 9 3 7 我只想保留具有cityid 15和cityid 7的userid(在我的示例中,它将是userid的1和3)。 我试过: 但对于蜂巢来说,它不起作用。 有人能帮忙吗 谢谢 好的,我找到了方法: select a.userid from (select userid from table where cityi

我在hive中有以下数据:

userid cityid
1      15
2      15
1      7
3      15
2      8
3      9
3      7
我只想保留具有cityid 15和cityid 7的userid(在我的示例中,它将是userid的1和3)。 我试过:

但对于蜂巢来说,它不起作用。 有人能帮忙吗


谢谢

好的,我找到了方法:

select a.userid from (select userid from table where cityid = 15) a join (select userid from table where cityid = 7) b on a.userid = b.userid;

尝试避免自连接

SELECT  userid
FROM
 ( SELECT userid, collect_set( cityid) as cities
   FROM table 
   GROUP BY userid 
 )
WHERE array_contains( cities, 7 )
AND array_contains( cities, 15 );

事实上,这个答案是错误的,因为我想要同时拥有cityid 15和cityid 7的用户。
SELECT DISTINCT userid FROM table_name WHERE cityid == 15 OR cityid == 7;
SELECT  userid
FROM
 ( SELECT userid, collect_set( cityid) as cities
   FROM table 
   GROUP BY userid 
 )
WHERE array_contains( cities, 7 )
AND array_contains( cities, 15 );