根据Hive中另一个表中的值限制表中的行

时间:2018-02-23 17:51:48

标签: hive

我先试过这个。

Create table tablec (
 id string,
 group int,
 rownumber int);

insert into table c 
select * from (select distinct a.id,a.group,a.rownumber from 
table a join table b 
on a.group = b.group where a.rownumber <= b.rownumber ) T;

我也尝试了下面的查询并获得相同的结果。

insert into table c 
select * from (select a.id, a.group, a.rownumber from 
table a , table b 
where a.group = b.group and a.rownumber <= b.rownumber ) T;

运行查询时,我没有收到错误。它正在创建表c,但值不受限制。任何人都可以建议我为什么会这样吗?

Example screenshot

1 个答案:

答案 0 :(得分:0)

我认为您不必使用JOINDISTINCT。像这样的相关exists查询应该没问题。首先,看看它是否只提供了所需的记录。然后使用此选择运行Insert语句。

SELECT a.group_id
    ,a.group_name
    ,a.rownumber
FROM tablea a
WHERE EXISTS (
        SELECT 1
        FROM tableb b
        WHERE a.group_id = b.group_id
            AND a.rownumber <= b.rownumber
        );

DEMO