Hive通过删除重复项来连接两个表

时间:2018-03-28 16:28:48

标签: hadoop hive hiveql

我有两个蜂巢表 -

Table1:
col1 col2
---------
1     b
2     c
3     d
Table2:
col1 col2 col3
----------------
1     b     x
1     b     y
1     b     z
2     c     x
3     d     x

在表2中我可以看到,我有col1和col2的重复值。当我选择时,我想删除这些重复项。 我不关心col3

我正在寻找能给我的选择查询 -

col1 col2 col3
----------------
1     b     y
2     c     x
3     d     x

我尝试使用不同的JOIN但最终得到重复值。

1 个答案:

答案 0 :(得分:2)

使用GROUP BYJOIN

SELECT a.col1,
  a.col2,
  MAX(b.col3) AS col3
FROM Table1 a
JOIN Table2 b
ON a.col1 = b.col1
  AND a.col2 = b.col2
GROUP BY a.col1,
  a.col2;
  

我不关心col3。

因此,如果您不想在输出中使用它,则只需使用EXISTS

即可
SELECT a.col1,
       a.col2
FROM   table1 a
WHERE  EXISTS (SELECT 1
               FROM   table2 b
               WHERE  a.col1 = b.col1);